<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>SAP ABAP Programming</title><description>SAP,ABAP programming,Reports,Bdc,Scripts,Smart Forms,ALV,ALE,IDOC,EDI,User,Customer Exits,BADI,BAPI, FAQ'S.</description><managingEditor>noreply@blogger.com (Technical Information)</managingEditor><pubDate>Tue, 22 Jul 2025 12:55:36 +0530</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">120</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://sapabapbasis4u.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:keywords>SAP,ABAP,programming,Reports,Bdc,Scripts,Smart,Forms,ALV,ALE,IDOC,EDI,User,Customer,Exits,BADI,BAPI,FAQ,S</itunes:keywords><itunes:summary>SAP,ABAP programming,Reports,Bdc,Scripts,Smart Forms,ALV,ALE,IDOC,EDI,User,Customer Exits,BADI,BAPI, FAQ'S.</itunes:summary><itunes:subtitle>SAP ABAP Programming</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Software How-To"/></itunes:category><itunes:owner><itunes:email>anushaads@gmail.com</itunes:email></itunes:owner><xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item><title>WORK FLOW SCENARIOS IN SD SAP II</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-scenarios-in-sd-sap-ii.html</link><category>ABAP WORK FLOW SCENARIOS IN SD</category><pubDate>Wed, 11 Mar 2009 11:53:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-8233152445897826541</guid><description>Processing Credit Memo Requests&lt;br /&gt;&lt;br /&gt;Each employee in the sales department is allowed to release credit memo requests up to a value of USD 300. The following authorization procedure has been defined for credit memo requests that exceed this limit:&lt;br /&gt;&lt;br /&gt;Credit memo requests with a value of between USD 300 and USD 5,000 may only be&lt;br /&gt;released by the group leader.&lt;br /&gt;&lt;br /&gt;Credit memo requests that exceed a value of USD 5,000, may only be released by the&lt;br /&gt;sales manager.&lt;br /&gt;&lt;br /&gt;Object Types (SD-SLS-RE)&lt;br /&gt;&lt;br /&gt;The interface between R/3 functionality and the workflow system is created using object technology.&lt;br /&gt;&lt;br /&gt;In the following scenario, the business application object for&lt;br /&gt;Credit memo requests is Object type BUS 2094.&lt;br /&gt;&lt;br /&gt;Initial Values (SD-SLS-RE)&lt;br /&gt;&lt;br /&gt;In the workflow, the person who releases or processes the credit memo request is decided according to the value of the credit memo request. You can determine two limit values: Amount limit 1 and amount limit 2.&lt;br /&gt;In order to ensure correct, cross-company code credit memo processing, you also need to specify a reference currency. The document currency for the credit memo request is then converted into the reference currency.&lt;br /&gt;&lt;br /&gt;The following company codes and their house currencies exist in one company:&lt;br /&gt;&lt;br /&gt;Company code 1: House currency FRF&lt;br /&gt;Company code 2: House currency DEM&lt;br /&gt;&lt;br /&gt;The employees assigned to the sales organization process the credit memo requests&lt;br /&gt;for company code 1 and company code 2.&lt;br /&gt;A reference currency (for example, USD) is defined in the workflow container. The&lt;br /&gt;net values in the sales documents are converted into the reference currency which&lt;br /&gt;means that the credit memo requests can then be processed and checked,&lt;br /&gt;independently of the currency in the company code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Workflow Template (SD-SLS-RE)&lt;br /&gt;&lt;br /&gt;Definition&lt;br /&gt;&lt;br /&gt;The following two workflow templates are delivered in the standard system for credit memo processing:&lt;br /&gt;&lt;br /&gt;Identification:WS20000009&lt;br /&gt;Identification code: Credit memos&lt;br /&gt;Long text: Credit memo processing&lt;br /&gt;&lt;br /&gt;Identification: WS20000019&lt;br /&gt;Identification code:CMR_CHECK&lt;br /&gt;Long text: Check credit memo requests&lt;br /&gt;For additional information, see:&lt;br /&gt;Flow of Workflow Template [Page 14].&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;Workflow Template 20000009 Credit Memo Processing&lt;br /&gt;&lt;br /&gt;Triggering Event in Workflow Template&lt;br /&gt;&lt;br /&gt;Updating the credit memo request triggers the event created for object type BUS2094 which starts the workflow template.&lt;br /&gt;&lt;br /&gt;Workflow Container and Data Flow&lt;br /&gt;&lt;br /&gt;The information needed for the workflow is contained in the credit memo request. This&lt;br /&gt;information is available as an event parameter in the container for the triggered event and have to be transferred into the workflow container using data flow.&lt;br /&gt;The following data flow definition between the triggering event and the workflow container is therefore defined in the standard system:&lt;br /&gt;Workflow Container Event Parameter Container&lt;br /&gt;&lt;br /&gt;WF_Initiator &lt;-- _EVT_Object (credit memo request)&lt;br /&gt;RefCurrency (reference currency)&lt;br /&gt;CUSTCOMPLAINTORDER&lt;br /&gt;(credit memo request)&lt;br /&gt;NetValue_Limit_1&lt;br /&gt;(amount limit 1)&lt;br /&gt;NetValue_Limit_2&lt;br /&gt;(amount limit 2)&lt;br /&gt;End_Flag&lt;br /&gt;(End indicator)&lt;br /&gt;The _WF_Initiator element is available in the workflow container in the standard system, while the other elements listed here have been added to the workflow container.&lt;br /&gt;&lt;br /&gt;Terminating Events&lt;br /&gt;&lt;br /&gt;The workflow template for credit memo requests is terminated with the Release credit memo request and Reject credit memo request events.&lt;br /&gt;Check Workflow Template 20000019 Credit Memo Processing&lt;br /&gt;&lt;br /&gt;Workflow Container&lt;br /&gt;&lt;br /&gt;The workflow container contains the end indicator (End_Flag), information about the credit memo request (CUSTCOMPLAINTORDER) and the employee responsible (ResponsibleAgents).&lt;br /&gt;&lt;br /&gt;Processor Assignment&lt;br /&gt;&lt;br /&gt;All people or organizational units that are assigned to the workflow template are informed.&lt;br /&gt;&lt;br /&gt;Maintain Processor Assignment&lt;br /&gt;&lt;br /&gt;Depending on the net value of the credit memo request and the defined organizational plan, the employee responsible receives a workitem in his or hers integrated inbox.&lt;br /&gt;For this to take place, you must list the various objects from organization management in Customizing for the SAP Business Workflow who can work with workflow-relevant credit memo requests, for example, jobs or positions. Before you do that, you need to set up the organizational plan.&lt;br /&gt;&lt;br /&gt;User Haywood has the group leader position while user Miller is in the sales&lt;br /&gt;manager position.&lt;br /&gt;Flow for Workflow Template&lt;br /&gt;&lt;br /&gt;When you create a credit memo request, the created event is triggered for object BUS2094 and the workflow template 20000009 is started.&lt;br /&gt;The system checks how high the net value of the credit memo request is. If the net value is below limit 1 (minimum limit), the system automatically releases the credit memo request in background processing.&lt;br /&gt;&lt;br /&gt;If the net value of the credit memo request is over limit value 1, the system&lt;br /&gt;terminates workflow&lt;br /&gt;&lt;br /&gt;template 20000009 and initiates workflow template 20000019.&lt;br /&gt;&lt;br /&gt;The relevant employee, depending on the value of the credit memo request and the&lt;br /&gt;organizational structure in use (sales organization, distribution channel, division), is then informed of this by the arrival of a work item in their integrated inbox. If the employee releases the credit memo request, the system ends the workflow and deletes the work item from the inbox.&lt;br /&gt;&lt;br /&gt;If the employee stops processing the work item, it remains in the inbox until it has been completed and only then is the workflow finished.&lt;br /&gt;&lt;br /&gt;If the employee changes any of the determining factors in the credit memo request (such as net value), the net value of the credit memo request has to be re-checked. The system deletes the work item from the inbox.&lt;br /&gt;&lt;br /&gt;Workflow template 20000009 receives a terminating event and workflow template 20000019 is triggered. Depending on the value of the item, the relevant employee is informed and receives a work item in their integrated inbox. Once the employee has finished processing the work item (by rejecting or releasing the credit memo request), the workflow is concluded. If the credit memo request is changed, workflow template 20000019 is called up. Processing continues until the credit memo request has either been rejected or released.&lt;br /&gt;&lt;br /&gt;Terminating Events&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The workflow template for checking credit memo requests is terminated with the Release credit memo request and Reject credit memo request events.&lt;br /&gt;&lt;br /&gt;Standard Tasks (SD-SLS-RE)&lt;br /&gt;&lt;br /&gt;Definition&lt;br /&gt;&lt;br /&gt;Standard tasks are single-step tasks supplied by SAP that describe basic business activities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>WORK FLOW SCENARIOS IN SD SAP I</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-scenarios-in-sd-sap-i.html</link><category>ABAP WORK FLOW SCENARIOS IN SD</category><pubDate>Wed, 11 Mar 2009 11:52:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-40355034564427600</guid><description>Processing Credit Memo Requests (SD-SLS-RE)&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;Credit memo requests normally need to be checked by the employee who entered them as well as approved by an additional decision-maker. The value of the credit memo determines who is able to approve it.&lt;br /&gt;&lt;br /&gt;Once a credit memo request is created, the system normally creates a billing block. This block prevents you from billing the credit memo request and can only be removed by an authorized employee.&lt;br /&gt;&lt;br /&gt;Using the workflow, you can represent the whole business process, with all the people involved, for approving credit memo requests within your company. This enables you to process credit memo requests simply and efficiently. If you do not use the workflow, the system does not control the process flow so you will have to organize the steps in credit memo processing yourself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the value of a credit memo request is below a minimum value, the system&lt;br /&gt;automatically releases it for billing by removing the billing block.&lt;br /&gt;If the credit memo request exceeds a certain value, the system automatically informs the employee responsible. She or he receives a work item in their inbox and can process it directly from there.&lt;br /&gt;The employee responsible can cancel, release, or process a credit memo request.&lt;br /&gt;If the employee cancels the request, the system automatically creates a reason for rejection in the credit memo request and ends processing.&lt;br /&gt;If the employee releases the request, the system automatically removes the billing block in the&lt;br /&gt;credit memo request and releases it for billing.&lt;br /&gt;If the employee processes the request, she or he can use all the functions available in the change transaction.&lt;br /&gt;The people informed by the workflow do not need to know either the name of the transaction or the menu path of the transactions involved.&lt;br /&gt;&lt;br /&gt;Prerequisites&lt;br /&gt;&lt;br /&gt;You have configured the settings in Customizing for the workflow and created an&lt;br /&gt;organizational plan (see Preparation and Customizing (SD-SLS-RE) [Page 17]).&lt;br /&gt;&lt;br /&gt;When you create credit memo requests, the system normally sets a billing block, which prevents it from being billed. Only authorized employees may remove this billing block, thus releasing the document for billing. The person who is able to check the credit memo before releasing it depends on the value of the credit memo.&lt;br /&gt;You create the billing block for credit memo requests in Customizing for Sales and&lt;br /&gt;Distribution when you define the order type (Sales and Distribution __Sales __Sales&lt;br /&gt;Documents_ Sales Document Header _ Define sales document types).&lt;br /&gt;&lt;br /&gt;When using the workflow for processing credit memo requests, we recommend that you&lt;br /&gt;should only allow the billing block to be removed by the people who are authorized to&lt;br /&gt;release credit memos of any value.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Process Flow&lt;br /&gt;&lt;br /&gt;Depending on the value of the credit memo request, the system runs through one of the following processes when you enter a credit memo request:&lt;br /&gt;&lt;br /&gt;If the value of the credit memo request is smaller or equal to a certain limit (L1), the system automatically releases the credit memo request. The system removes the&lt;br /&gt;billing block in the background, releasing the credit memo request for billing.&lt;br /&gt;If the value of the credit memo request is between limit L1 and limit L2, or equal to L2, the job responsible is informed that the credit memo request should be checked. All the people assigned to this job receive a work item in their integrated inbox, where they can cancel, release or process the credit memo request.&lt;br /&gt;&lt;br /&gt;Cancel credit memo request&lt;br /&gt;&lt;br /&gt;The employee has to enter a reason for rejection. The system automatically transfers&lt;br /&gt;the reason for rejection into the credit memo request and stops processing.&lt;br /&gt;&lt;br /&gt;Release credit memo request&lt;br /&gt;The system automatically removes the billing block in the credit memo request and&lt;br /&gt;releases the document for billing.&lt;br /&gt;&lt;br /&gt;Process credit memo request&lt;br /&gt;&lt;br /&gt;Here, the user branches into the “Change sales order” transaction, where they can&lt;br /&gt;use all the functions in this transaction. According to the user’s authorization, he or she can remove a billing block, enter a reason for rejection, or process individual items (for example, delete or add order items, or change the order quantity).&lt;br /&gt;&lt;br /&gt;The system checks whether the billing block was removed manually. If there is a&lt;br /&gt;billing block, the system re-checks the value of credit memo request and informs the&lt;br /&gt;employee responsible. This process is repeated until the credit memo request has&lt;br /&gt;either been rejected or released.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>WORK FLOW SAP IV</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-sap-iv.html</link><category>ABAP WORK FLOW COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:52:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-5767224102614851588</guid><description>Preparations and Customizing&lt;br /&gt;&lt;br /&gt;Determining Responsibilities of the Roles&lt;br /&gt;&lt;br /&gt;You must assign SAPorganizationjal object type T024D (MRP controller group). Since the organizational plan is always structured according to you requirements, this step is always necessary.&lt;br /&gt;&lt;br /&gt;When you create the assignment, you must specify the plant and the MRP controller so that the MRP controller is uniquely identified. You can create several assignments within your organizational plan.&lt;br /&gt;&lt;br /&gt;Executing Task-Specific Customizing&lt;br /&gt;&lt;br /&gt;1. Perform task-specific Customizing for SAP Business Workflow.&lt;br /&gt;2. Classify the standard task TS20000477 (Display change management), TS30001203&lt;br /&gt;(Determine possible agent and dispatch), TS20000478 (Create text) and TS20000479&lt;br /&gt;(Display text) as general tasks.&lt;br /&gt;3. Assign the standard task TS20000480 (make change) to the agents who could process it.&lt;br /&gt;&lt;br /&gt;Activate Event Receiver Linkage&lt;br /&gt;&lt;br /&gt;The event ChangeManagementOpened (configuration change with conflict) for object type&lt;br /&gt;BUS2002 (network) is the triggereing event for workflow template 20000265 (Change&lt;br /&gt;management) and as such is entered in the event linkage table The terminating event&lt;br /&gt;ChangeManagementClosed (Change management concluded) is also entered in this table.&lt;br /&gt;&lt;br /&gt;You can find the table in Event creation _ Status management. You decide wheteher you want to mainatin system settings, if you want to use system statauses, or customer settings, if you want to use your own status profile. In our case, the entry is in the system settings.&lt;br /&gt;&lt;br /&gt;The status object (NPH), object type (BUS2002) and the event are maintained here. If you select an entry and double-click on Status restriction in the left-hand screen area, the relevant status is displayed. The Inactive field informs you whether the event is created when the status is set or when the status is revoked (subsequent status set).&lt;br /&gt;&lt;br /&gt;To actually start the workflow template, the linkage between the triggering event and the workflow template, as receiver of the event, has to be activated in Customizing for SAP Business Workflow.&lt;br /&gt;&lt;br /&gt;The event linkage of the workflow templates must also be activated. To create your own workflow template or to display an existing template, in the SAP Business Workflow menu choose Definition tools _ Tasks/Task groups and then the required maintenance transaction. On the initial screen enter Workflow template in the Task type field and the name of the workflow template. Choose either , , or to create, change or display respectively.The workflow template screen appears. To activiate the workflow, choose the Triggering events tab page and activate the event by clicking on the icon in the column so that a green light appears.&lt;br /&gt;&lt;br /&gt;Further Options If you want to use the workflow tempalte without a dispatcher, you must delete the following steps: Display change management (TS20000477), Determine possible agents and dispatch (TS30001203)as well as the user decision Do you want to create a text ?. You can delete single steps in the workflow editor. Select the node to be deleted. In the context menu choose Delete. If you delete the Do you want to create a text ? node, you also delete the dependent nodes Create text (TS20000478) and Display text (TS20000479) and the connecting operators. A dialog box to&lt;br /&gt;this effect appears, which you have to confirm. Apart from deleting the nodes, you must change the agent assignment for the Make change (TS20000480) single step.&lt;br /&gt;&lt;br /&gt;Delete the SelectedObject expression and enter role 20000054 MRP controller group.You now have to change the autoamtically generated dat flow from the workflow container to the role container. Delete the Org_Object_ID and choose, using F4 help, the&lt;br /&gt;attribute MRP controller group under network.&lt;br /&gt;Check the workflow template and then activate it.&lt;br /&gt;Operation and Connection to the Application Functionality Changes to the configuration of a sales order can occur frequently. Depending on the change&lt;br /&gt;profile and the status of the network, the system can set the Manual adjustment necessary status.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have made the necessary settings in Customizing, the workflow template is active and is started automatically from the application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>WORK FLOW SAP III</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-sap-iii.html</link><category>ABAP WORK FLOW COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:51:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-7406699381043599628</guid><description>Technical Realization&lt;br /&gt;&lt;br /&gt;Object Types Used&lt;br /&gt;The interface between the R/3 functionality and the workflow system has been implemented using object technology. As a result, this topic contains information of a more technical nature, than is required for a first overview.&lt;br /&gt;&lt;br /&gt;Standard tasks&lt;br /&gt;&lt;br /&gt;Standard tasks are single-step tasks delivered from SAP, which describe basic business processes from an organizational point of view. A single-step task always refers to an object method ( technical connection to R/3 functionality) and is linked with possible agents, who are assigned to the relevant part of the organization.&lt;br /&gt;Workflow template The actual business process as been implemented as a workflow template. You can find this workflow template in your R/3 system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Object Network (BUS2002)&lt;br /&gt;&lt;br /&gt;Objects are created in runtime and are the specific instances of pre-defined object types that have been given values. Object types are defined, entering the component, in the Business Object Repository and implemented:&lt;br /&gt;&lt;br /&gt;An object Network (BUS2002) exist, for which methods, attributes, and events have been defined that are used by the workflow.&lt;br /&gt;Standard Task TS20000477 Display change management (PSDisplayCM)&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;In this standard task, the system displays change management for networks to the dispatcher.&lt;br /&gt;&lt;br /&gt;He/she then decides which agent is responsible for the change comparison.&lt;br /&gt;Referenced object methods: Object type BUS2002 (network), method&lt;br /&gt;&lt;br /&gt;ChangeManagementDisplay (display change management)&lt;br /&gt;&lt;br /&gt;Assigning agents: This task should be classed as a general task. General tasks do not have to be assigned to an agent, since they can be carried out by everyone. The agent is determined from the context of the workflow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard Task TS30001203 Determine possible agents and dispatch&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;This standard task determines the possibe agents for a subsequent task in the workflow. The dispatcher selects an agent from a list of possible agents. This agent is then assigned the singlestep task in the workflow.&lt;br /&gt;&lt;br /&gt;Referenced object methods: Object type WF_TASK, method&lt;br /&gt;&lt;br /&gt;AllAgentsOfTaskGetAndDispatch (Determine possible agents and dispatch)&lt;br /&gt;Assigning agents: This task should be classed as a general task. General tasks do not have to be assigned to an agent, since they can be carried out by everyone. The agent is determined from the context of the workflow.&lt;br /&gt;&lt;br /&gt;Standard Task TS20000478 Create Text (PS-CreaText)&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;In this standard task, the dispatcher creates a text for the agent.&lt;br /&gt;Referenced object methods: Object type STD_TEXT, method Create (create text)&lt;br /&gt;Assigning employees: This task should be classed as a general task. General tasks do not have to be assigned to an agent, since they can be carried out by everyone. The agent is determined from the context of the workflow.&lt;br /&gt;&lt;br /&gt;Standard Task TS20000479 Display Text (PS-DispText)&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;In this standard text the agent sees the text that the dispatcher created.&lt;br /&gt;Referenced object methods: Object type STD_TEXT, method ReplaceAndDisplay (replace&lt;br /&gt;text symbols)&lt;br /&gt;&lt;br /&gt;Assigning agents:s This task should be classed as a general task. General tasks do&lt;br /&gt;not have to be assigned to an agent, since they can be carried out by everyone. The agent is determined from the context of the workflow.&lt;br /&gt;&lt;br /&gt;Standard Task TS20000480 Make Change (PS-EditCM)&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;In this standard task when an agent opens the work item, he/she goes directly to&lt;br /&gt;change mangement for networks, to make the necessary change steps.&lt;br /&gt;&lt;br /&gt;Referenced object methods: Object type BUS2002 (network), method&lt;br /&gt;&lt;br /&gt;ChangeManagementEdit (make change)&lt;br /&gt;&lt;br /&gt;This is ansynchronous method, which means that it can only be completed if another,&lt;br /&gt;terminating, event occurs. In this case, this event is the successful execution of a change comparison for the corresponding network. The work item remains until the event occurs. The terminating event ChangeManagementClosed is defined in the task on the corresponding tab page.&lt;br /&gt;&lt;br /&gt;Assigning agents: Here you should enter all the possible agents for confirmation&lt;br /&gt;change management, since the dispatcher sees them in a list. You can assign agents in the task basic data.&lt;br /&gt;&lt;br /&gt;You can also define the task as a general task and let the dispatcher choose the agent.&lt;br /&gt;Standard role 20000054 MRP Controller Group (MRPContGroup)&lt;br /&gt;&lt;br /&gt;Use roles to specify the agents for tasks or the addressees for messages.&lt;br /&gt;Determining all the agents with the relevant attribute is refered to as role resolution. Each role has a role parameter container that contains the values used in role resolution.&lt;br /&gt;&lt;br /&gt;Technical Realization&lt;br /&gt;&lt;br /&gt;Entering a role is just one of several ways of finding the responsible agents or addressees. It is also possible to find someone via a suitable organization object (position, job, organization unit) or an expression with reference to the workflow container.&lt;br /&gt;&lt;br /&gt;Role resolution is facititated by the SAP organization object MRP Controller Group&lt;br /&gt;(MRP_Controller_Group). The key for the MRP controller group is T024D.&lt;br /&gt;SAP organization object types (short: SAP OrgObjectTypes) represent organizational units on the object type level in the Business Object Repository. Organizational units are used to group employees together and to describe these groups. The key of the SAP organizational object type MRP controller group consists of the plant and the MRP controller.&lt;br /&gt;&lt;br /&gt;The object type BUS2002 receives a MRPControllerGroup attribute that represents a object type reference to the SAP organizational object type MRP controller group.&lt;br /&gt;The assignment of the SAP organizational object type MRP controller group to an organizational unit or a position results allows the responsible agent group to be determined at runtime. Since the role entry parameter is BUS2002, the role resolution searches the whole organizational plan for departments that are linked with objects of the type MRP controller group.&lt;br /&gt;&lt;br /&gt;All employees in such an organizational unit or position receive the work item.&lt;br /&gt;The role determines the agents for the single step Display Change management. The agents found determine the responsible agent.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>WORK FLOW SAP II</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-sap-ii.html</link><category>ABAP WORK FLOW COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:50:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-5497268784591169712</guid><description>Standard tasks&lt;br /&gt;&lt;br /&gt;Standard tasks are single-step tasks delivered from SAP, which describe basic business processes from an organizational point of view. A single-step task always refers to an object method ( technical connection to R/3 functionality) and is linked with employees, who are assigned to the relevant part of the organization.&lt;br /&gt;&lt;br /&gt;Standard Task TS20000653:&lt;br /&gt;&lt;br /&gt;Abbreviation: PurchOrdPS&lt;br /&gt;Description: Change order network&lt;br /&gt;Referenced object methods, characteristics&lt;br /&gt;Object type: BUS2002&lt;br /&gt;Method: DisplayPurchaseOrderChange&lt;br /&gt;Characteristics: synchronous , with dialog&lt;br /&gt;&lt;br /&gt;Process Flow&lt;br /&gt;&lt;br /&gt;If there are changes in a network that affect ordered materials or services (quantities or dates), the affected materials are sorted according to purchasing group (in the purchase order). The event PurchaseOrderChange is then triggered for object type BUS2002 for each purchasing group.&lt;br /&gt;&lt;br /&gt;The event BUS2002.PurchaseOrderChange is the triggering event for the standard task&lt;br /&gt;TS20000653. It has the following parameters:&lt;br /&gt;&lt;br /&gt;Parameter Description&lt;br /&gt;&lt;br /&gt;PurchasingGroup Purchasing group&lt;br /&gt;TodoList Internal table containing the changed materials and services&lt;br /&gt;The following data flow has been defined between the event PurchaseOrderChange and the task TS20000653:&lt;br /&gt;&lt;br /&gt;Task container Event parameter container&lt;br /&gt;&lt;br /&gt;Network _Evt_Object&lt;br /&gt;Start date _Evt_Creation_Date&lt;br /&gt;Start time _Evt_Creation_Time&lt;br /&gt;Triggered by _Evt_Creator&lt;br /&gt;Simple todo list TodoList&lt;br /&gt;Purchasing group PurchasingGroup&lt;br /&gt;The standard task uses the role 00900010 (purcahsing group). It determines all users linked with the relevant purchasing group. If no users have been linked the purchasing in SAP Organization Management, all the users linked to the standard task receive a work item.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Preparations and Customizing&lt;br /&gt;&lt;br /&gt;As well as the general Customizing that guarantees the smooth performance of the workflow system, it is also necessary to carry out special Customizing for standard task TS20000653.&lt;br /&gt;&lt;br /&gt;Maintaining Employee Assignments&lt;br /&gt;&lt;br /&gt;Assign standard task TS20000653 to the employees who could need it. To do so, choose in Customizing Project System _ Workflow _ Configure Standard Tasks for Workflow in the Project System or proceed as follows:&lt;br /&gt;1. On the SAP Easy Access menu choose Tools _ Business Workflow _ Development _&lt;br /&gt;Tasks/Task groups _ Display.&lt;br /&gt;2. Choose Tasks/task groups _ Display and enter the standard task TS20000653&lt;br /&gt;3. Assign the standard task TS20000653 to the users in the organizational unit that is to process the task in your company.&lt;br /&gt;Link Purchasers to Organization Management&lt;br /&gt;If you only want the purchaser responsible to receive a work item (instead of all the possible agents of the standard task TS20000613), link the purchaser to SAP Organizational Management. To do so, use the Customizing activity Project System _ Workflow _ Configure Standard Tasks for Workflow in Project System _ Customizing tasks or proceed as follows:&lt;br /&gt;&lt;br /&gt;1. On the SAP Easy Access menu choose Tools _ Business Workflow _ Development&lt;br /&gt;Definition tools _SAP org. objects _ Create assignment.&lt;br /&gt;The Assignment to SAP organizational objects initial screen appears.&lt;br /&gt;2. Enter the organizational object.&lt;br /&gt;3. In the Org. object type field enter T024.&lt;br /&gt;&lt;br /&gt;Activating the Event Linkage&lt;br /&gt;The PurchaseOrderChange event for the object type BUS2002 is the triggering event for the standard task TS20000653. Before the standard task can be started event linkage must be activated. To do so, choose in Customizing Project System _ Workflow _ Configure Standard Tasks for Workflow in the Project System or proceed as follows:&lt;br /&gt;1. On the SAP Easy Access menu choose Tools _ Business Workflow _ Development&lt;br /&gt;Definition tools _ Tasks/Task groups_ Display.&lt;br /&gt;&lt;br /&gt;The Task: Display screen appears.&lt;br /&gt;&lt;br /&gt;2. Enter the standard task TS20000653, choose and go to the Triggering events tab page.&lt;br /&gt;3. Activate the event by clicking on the iicon in the column so that a green light appears.&lt;br /&gt;Maintaining Order Type-Dependent Parameters You must define whether the standard task TS20000653 is to be started for each order type (network type)and plant. Use Customizing activity Project System _ Workflow _ Configure&lt;br /&gt;Standard Tasks for Workflow in the Project System _ Network Type Parameters:&lt;br /&gt;&lt;br /&gt;Overview.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Operation&lt;br /&gt;&lt;br /&gt;When you execute a work item for standard task TS20000653, you see a screen split into two sections:&lt;br /&gt;On the left-hand side is an overview list of the materials or services. There is checkbox for each material/service. You can use these checkboxes to indicate which materials/services you have already processed.&lt;br /&gt;&lt;br /&gt;A red light in front of a material or service means that another work item has been created for this material or service after the current work item was created.&lt;br /&gt;By double-clicking on a material or service in the overview list you can display the detailed data on the right-hand screen.&lt;br /&gt;&lt;br /&gt;You can edit exsiting purchase orders or create new ones. A new purchase order does not appear immediately in the table of existing purchase orders. The purchase order has to be saved to the database first. After it has been saved you can display the purchase order by:&lt;br /&gt;&lt;br /&gt;Choosing Refresh&lt;br /&gt;Double-clicking on the material or service in the overview list.&lt;br /&gt;&lt;br /&gt;You can always interrupt processing of a work item by choosing Cancel, Back or Exit. You can then resume work later. Choose Close Workflow to finish the workflow.&lt;br /&gt;&lt;br /&gt;Configuration Change Management (PS)&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;A network can be created for a configurable product from the sales order using assembly processing. The characteristic value assignment is passed directly from the configurable material to the network, and the relevant activities, activity elements, components, PRTs, etc. are selected.&lt;br /&gt;&lt;br /&gt;If the configuration of the material, which has an assembly order involving a network, is later changed, a change comparison is started for the network. Objects are added to or deleted from the network. The system tries to make this change comparison automatically. If conflicts arise, the network receives the Manual adjustment necessary status and the change steps have to be processed manually.&lt;br /&gt;&lt;br /&gt;The changes to the configuration are made in Sales by the responsible employee. However, an employee in project planning makes the changes to the network. To facilitate communication between the two departments and to avoid long processing times, a workflow template has been created to automate this business process.&lt;br /&gt;&lt;br /&gt;Process Flow&lt;br /&gt;&lt;br /&gt;The triggering event for this workflow is a conflict during a change comparison, which means that that the Manual adjustment necessary status is set. The flow of the workflow template is as follows:&lt;br /&gt;&lt;br /&gt;A dispatcher determines which employee in project planning should make the change&lt;br /&gt;comparison. He/she makes this decision after seeing the network. The dispatcher is determined via a role, that evaluates the network data and the structure of the organization. The dispatcher can then create a text that is sent to the chosen employee. The employee sees this text and can then start processing the network immediately. The workflow finishes when the change comparison is concluded successfully.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>WORK FLOW  SAP I</title><link>http://sapabapbasis4u.blogspot.com/2009/03/work-flow-sap-i.html</link><category>ABAP WORK FLOW COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:50:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-6598629281604296184</guid><description>Workflow&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;SAP Business Workflow has the technology and tools for automated control and processing of cross-application processes.&lt;br /&gt;You can use workflow within the Project System to automate and integrate the performance of cross-application and cross-department processes within one project.&lt;br /&gt;The Project System uses _ Predefined standard tasks in purchasing, confirmation, and during configuration changes _ Workflow tasks in milestones, which can also be user-defined.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Preparations and Customizing&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;To use Workflow in the Project System, you must make the following settings in Customizing for Workflow and the Project System:&lt;br /&gt;&lt;br /&gt;Maintain your company’s organization structure&lt;br /&gt;Link the predefined standard tasks with the authorized people in your company&lt;br /&gt;Activate existing event receiver links between triggering events and consuming&lt;br /&gt;workflow tasks.&lt;br /&gt;&lt;br /&gt;Name a technical person responsible for each standard workflow template.&lt;br /&gt;Determine whether a work item should be created and make the appropriate setting in&lt;br /&gt;Customizing for network type parameters.&lt;br /&gt;Determine whether a work item should be created if there is a deviation in the duration and work, and make the appropriate setting in Customizing for confirmation parameters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard Tasks in the Project System&lt;br /&gt;&lt;br /&gt;SAP has predefined the following standard workflow tasks and provided them with the Project System:&lt;br /&gt;Standard Task TS20000653: Purchase Order Change&lt;br /&gt;If you change dates or quantities of material components in a network with externally processed activities, for which a purchase order has already been created, the system automatically creates a work item.&lt;br /&gt;&lt;br /&gt;The purchasing agent receives a message in the mail system regarding the changes that need to be made. This person can then make the necessary changes to the purchase order directly from the mail system.&lt;br /&gt;&lt;br /&gt;Standard task TS00007944: Enter actual data&lt;br /&gt;&lt;br /&gt;You can create a work item for confirmation from the information system. The pool of&lt;br /&gt;confirmations can be sent to various addresses, for example, to a user or a work center.&lt;br /&gt;&lt;br /&gt;Standard Task TS00008015: Deviation in the Confirmation is too Large&lt;br /&gt;If the duration or work exceeds the values you defined in the confirmation parameters in Customizing, the system automatically creates a work item: The MRP controller receives a work item by mail and can display the confirmation or network. The MRP controller can also use the mail system to contact the person who made the confirmation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard Task TS00200040: Change Network&lt;br /&gt;SAP has predefined this standard task which you can use as a model for creating your own standard tasks and workflow tasks for the milestones in a network. This standard task calls up the change network transaction. You can use it to define your own standard tasks and workflow tasks.&lt;br /&gt;&lt;br /&gt;WS20000265 Configuration Change Management&lt;br /&gt;This workflow template contains the following standard tasks:&lt;br /&gt;TS20000477 Display change management&lt;br /&gt;TS20000478 Create text&lt;br /&gt;TS20000479 Display text&lt;br /&gt;TS20000480 Make change&lt;br /&gt;User-defined Standard Tasks and Workflow Tasks in&lt;br /&gt;&lt;br /&gt;Milestones&lt;br /&gt;&lt;br /&gt;You can use the milestone function start workflow task in a network to start:&lt;br /&gt;&lt;br /&gt;Standard tasks&lt;br /&gt;Tasks&lt;br /&gt;Workflow tasks&lt;br /&gt;&lt;br /&gt;depending on the status of the activity to which the milestone is assigned. You can use network and activity data for the task.&lt;br /&gt;The tasks must meet certain conditions. For more information on how to define user-defined standard and workflow tasks, refer to the Implementation Guide for the Project System under Workflow .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;If, during network processing, either an external material (non-stock item) or an external service (external activity/service activity) has to be procured, a purchase requisition is created. This is procesed by the purchaser, who creates on or more purchase orders. This is noted in the network.&lt;br /&gt;If changes occur in the nezwork with regards to the ordered materials or services (changed quantities or dates), the sytem automatically changes the purchase requisition. However, any purchase orders that have already been created must be changed manually by the responsible purchaser.&lt;br /&gt;&lt;br /&gt;Process Flow&lt;br /&gt;&lt;br /&gt;You can use the SAP Business Workflow to inform the responsible purchaser, if based on a change in a network&lt;br /&gt;&lt;br /&gt;The required quantity or the requirements date of an external material or service changes or&lt;br /&gt;An external material item or external activity is deleted or&lt;br /&gt;An external activity becomes an internal activity or&lt;br /&gt;The external material or service is no longer required, because the network now has the Technically completed status&lt;br /&gt;&lt;br /&gt;And one or more purchase orders have been created for the purchase requisition&lt;br /&gt;The purchaser receives a work item, in which all the relevant changes that affect the external materials or services are listed. He/she can view the purchase requisitions and the existing purchase orders that are affected. It is also possible to edit the purchase orders and to create new orders.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Technical Implementation&lt;br /&gt;&lt;br /&gt;Object Types&lt;br /&gt;&lt;br /&gt;The interface between the R/3 functionality and the workflow system has been&lt;br /&gt;implemented using object technology. As a result, this topic contains information of a more technical nature, which is now required for a first overview.&lt;br /&gt;&lt;br /&gt;In this context, the following object types are important:&lt;br /&gt;BUS2002: Network&lt;br /&gt;Position in the object repository: Project System&lt;br /&gt;T024: Purchasing group&lt;br /&gt;Position in the object repository: Materials management _ Sales&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP X</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-x.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:49:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-7490752441391026293</guid><description>(23)  BATCH INPUT RECORDING FOR TRANSACTION RUNS:&lt;br /&gt;&lt;br /&gt;This section tells you how to use the recording functions of batch input.&lt;br /&gt;For more information, refer to these sections:&lt;br /&gt;&lt;br /&gt;a)Recording features&lt;br /&gt;b)Sample program&lt;br /&gt;c)Special recording features&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(24) BATCH INPUT AUTHORIZATIONS:&lt;br /&gt;&lt;br /&gt;You need no special authorization -- other than the ABAP/4 run time authorization (authorization object S_PROGRAM -- to run a program that creates batch input. Any user can create batch input sessions.&lt;br /&gt;&lt;br /&gt;Starting processing for a session once it is in the queue is another matter, however. To start sessions, you need the authorizations described in "Managing Batch Input Sessions" in the System Services guide.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP IX</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-ix.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:49:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-8579706045145157560</guid><description>Error Analysis and Restart Capability&lt;br /&gt;&lt;br /&gt;Unlike "classical" batch input processing using sessions, CALL TRANSACTION USING processing does not provide any special handling for incorrect transactions. There is no restart capability for transactions that contain errors or produce update failures.&lt;br /&gt;&lt;br /&gt;You can handle incorrect transactions by using update mode S (synchronous updating) and checking the return code from CALL TRANSACTION USING. If the return code is anything other than 0, then you should do the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;write out or save the message table&lt;br /&gt;use the BDCDATA table that you generated for the CALL TRANSACTION USING to generate a batch input session for the faulty transaction. You can then analyze the faulty transaction and correct the error using the tools provided in the batch input management facility.&lt;br /&gt;&lt;br /&gt;20)  USING CALL DIALOG WITH BATCH INPUT:&lt;br /&gt;&lt;br /&gt;A program that uses CALL DIALOG to submit batch input should perform the following steps:&lt;br /&gt;&lt;br /&gt;1. For the screens you want processed, fill all desired fields.&lt;br /&gt;2. Use a CALL DIALOG statement to call the dialog module and to pass it to the             BDCDATA table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The MODE parameter in the CALL statement is explained in Using CALL TRANSACTION USING for Batch Input(19).&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;CALL DIALOG 'DIALOG1' USING BDCDATA MODE 'E'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(21)   DIRECT INPUT:&lt;br /&gt;&lt;br /&gt;To enhance the batch input procedure, the system offers the direct input technique, especially for transferring large amounts of data. In contrast to batch input, this technique does not create sessions, but stores the data directly. It does not process screens.&lt;br /&gt;&lt;br /&gt;To enter the data into the corresponding database tables directly, the system calls a number of function modules that execute any necessary checks. In case of errors, the direct input technique provides a restart mechanism. However, to be able to activate the restart mechnism, direct input programs must be executed in the background only.&lt;br /&gt;&lt;br /&gt;To maintain and start these programs, use program RBMVSHOW or the transaction BMV0.&lt;br /&gt;&lt;br /&gt;Examples for direct input programs are:&lt;br /&gt;&lt;br /&gt;Program Application&lt;br /&gt;&lt;br /&gt;RFBIBL00 FI&lt;br /&gt;RMDATIND MM&lt;br /&gt;RVAFSS00 SD&lt;br /&gt;RAALTD11 AM&lt;br /&gt;RKEVEXT0 CO-PA&lt;br /&gt;For more information, see the respective program documentation.&lt;br /&gt;&lt;br /&gt;22)  SAMPLE BATCH INPUT PROGRAM:&lt;br /&gt;&lt;br /&gt;The following program demonstrates both the creation of sessions, and the use of CALL TRANSACTION USING.&lt;br /&gt;REPORT RJBDC200 LINE-SIZE 120.&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*        Add a line in a report                                                        *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;PARAMETERS : BDCTYPE   TYPE C DEFAULT 'M',&lt;br /&gt;                                " M = Create batch input session&lt;br /&gt;                                " T = Call transaction&lt;br /&gt;      "---------------------------------------------------*&lt;br /&gt;      " Only used for batch input sessions                        *&lt;br /&gt;      "---------------------------------------------------*&lt;br /&gt;      GROUP(12) TYPE C DEFAULT 'BDCTEST',&lt;br /&gt;                                " group name of session&lt;br /&gt;      USER(12) TYPE C DEFAULT SY-UNAME,&lt;br /&gt;                                " user name for starting the&lt;br /&gt;                                " session in background&lt;br /&gt;      KEEP(1) TYPE C,&lt;br /&gt;             " ' ' = delete session after processing&lt;br /&gt;             " 'X' = keep session after successful&lt;br /&gt;                                " processing&lt;br /&gt;      HOLDDATE LIKE SY-DATUM,&lt;br /&gt;      "---------------------------------------------------*&lt;br /&gt;      " Only used for call transaction                                *&lt;br /&gt;      "---------------------------------------------------*&lt;br /&gt;      DMODE TYPE C DEFAULT 'A'.&lt;br /&gt;                                " Display mode&lt;br /&gt;                                " 'A' = display all screens&lt;br /&gt;                                " 'E' = display only errors&lt;br /&gt;                                " 'N' = display nothing&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*        Batch input data for a single transaction                             *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;DATA: BEGIN OF BDCDATA OCCURS 0.&lt;br /&gt;      INCLUDE STRUCTURE BDCDATA.&lt;br /&gt;DATA: END OF BDCDATA.&lt;br /&gt;DATA: BEGIN OF MESSTAB OCCURS 0.&lt;br /&gt;      INCLUDE STRUCTURE BDCMSGCOLL.&lt;br /&gt;DATA: END OF MESSTAB.&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*       Generate batch input                                                          *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;CASE BDCTYPE.&lt;br /&gt;WHEN 'M'.&lt;br /&gt;  PERFORM CREATE_GROUP.&lt;br /&gt;  EXIT.&lt;br /&gt;WHEN 'T'.&lt;br /&gt;  PERFORM CALL_TRANSACTION.&lt;br /&gt;  EXIT.&lt;br /&gt;ENDCASE.&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*                                                                                                *&lt;br /&gt;*        Create batch input session                                                *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;FORM CREATE_GROUP.&lt;br /&gt;WRITE: / 'Create group'.&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;"      Open batch input group                                                *&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;CALL FUNCTION 'BDC_OPEN_GROUP'&lt;br /&gt;     EXPORTING&lt;br /&gt;          CLIENT   = SY-MANDT&lt;br /&gt;          GROUP    = GROUP&lt;br /&gt;          USER     = USER&lt;br /&gt;          KEEP     = KEEP&lt;br /&gt;          HOLDDATE = HOLDDATE.&lt;br /&gt;WRITE: / 'BDC_OPEN_GROUP    rc ='(999), SY-SUBRC.&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;"      Insert first transaction                                                    *&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;PERFORM GEN_BDC_DATA.&lt;br /&gt;CALL FUNCTION 'BDC_INSERT'&lt;br /&gt;     EXPORTING&lt;br /&gt;          TCODE     = 'SE38'&lt;br /&gt;     TABLES&lt;br /&gt;          DYNPROTAB = BDCDATA.&lt;br /&gt;WRITE: / 'BDC_INSERT        rc ='(999), SY-SUBRC.&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;"      Insert second transaction                                               *&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;PERFORM GEN_BDC_DATA.&lt;br /&gt;CALL FUNCTION 'BDC_INSERT'&lt;br /&gt;     EXPORTING&lt;br /&gt;          TCODE     = 'SE38'&lt;br /&gt;     TABLES&lt;br /&gt;          DYNPROTAB = BDCDATA.&lt;br /&gt;WRITE: / 'BDC_INSERT        rc ='(999), SY-SUBRC.&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;"      Close batch input group                                                *&lt;br /&gt;"------------------------------------------------------------*&lt;br /&gt;CALL FUNCTION 'BDC_CLOSE_GROUP'.&lt;br /&gt;WRITE: / 'BDC_CLOSE_GROUP   rc ='(999), SY-SUBRC.&lt;br /&gt;ENDFORM.                               " End CREATE_GROUP&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*                                                                                                *&lt;br /&gt;*        Call Transaction Using                                                      *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;FORM CALL_TRANSACTION.&lt;br /&gt;WRITE: / 'Call Transaction  RC ='(999).&lt;br /&gt;PERFORM GEN_BDC_DATA.&lt;br /&gt;CALL TRANSACTION 'SE38' USING BDCDATA MODE DMODE MESSAGES INTO&lt;br /&gt;        MESSTAB.&lt;br /&gt;WRITE: SY-SUBRC, SY-MSGTY, SY-MSGID, SY-MSGNO, SY-MSGV1.&lt;br /&gt;WRITE: / '                                      ', SY-MSGV2.&lt;br /&gt;WRITE: / '                                      ', SY-MSGV3.&lt;br /&gt;WRITE: / '                                      ', SY-MSGV4.&lt;br /&gt;ENDFORM.                               " End CALL_TRANSACTION&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*                                                                                                *&lt;br /&gt;*        Create batch input data for                                                *&lt;br /&gt;*               transaction SE38                                                       *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;FORM GEN_BDC_DATA.&lt;br /&gt;DATA: LINE LIKE BDCDATA-FVAL.&lt;br /&gt;REFRESH BDCDATA.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        First screen of transaction                                           *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMS38M' '0100'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'RS38M-PROGRAMM'  'RJBDC999'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'bdc_cursor' 'chap'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/00'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        In editor, go to bottom of report                                  *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMSEDT' '2310'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'RSTXP-TDCOMMLINE' 'BOT'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        Insert line into report                                                   *&lt;br /&gt;*----------------------------------------------------- ------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMSEDT' '2310'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'RSTXP-TDLINECOM(17)' 'I'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        Go to bottom of report again                                       *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMSEDT' '2310'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'RSTXP-TDCOMMLINE' 'BOT'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        Modify line in report and save report                           *&lt;br /&gt;*                              (Enter f11 in ok-code)                          *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMSEDT' '2310'.&lt;br /&gt;LINE    = 'Batchinput'.&lt;br /&gt;LINE+20 = SY-DATUM.&lt;br /&gt;LINE+30 = SY-UZEIT.&lt;br /&gt;PERFORM BDC_FIELD  USING 'RSTXP-TDLINE(17)' LINE.&lt;br /&gt;PERFORM BDC_FIELD  USING 'BDC_OKCODE'       '/11'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;*        Leave the editor (enter f3 in ok-code)                         *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMSEDT' '2310'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'BDC_OKCODE'       '/3'.&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*        Leave transaction se38 (enter f15 in                            *&lt;br /&gt;*                                ok-code)                                            *&lt;br /&gt;*------------------------------------------------------------*&lt;br /&gt;PERFORM BDC_DYNPRO USING 'SAPMS38M' '0100'.&lt;br /&gt;PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/15'.&lt;br /&gt;ENDFORM.                               "End GEN_BDC_DATA&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*                                                                                                *&lt;br /&gt;*        In the batch input data, start a new screen                         *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;FORM BDC_DYNPRO USING PROGRAM DYNPRO.&lt;br /&gt;CLEAR BDCDATA.&lt;br /&gt;BDCDATA-PROGRAM  = PROGRAM.&lt;br /&gt;BDCDATA-DYNPRO   = DYNPRO.&lt;br /&gt;BDCDATA-DYNBEGIN = 'X'.&lt;br /&gt;APPEND BDCDATA.&lt;br /&gt;ENDFORM.                               "End BDC_DYNPRO&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;*                                                                                                *&lt;br /&gt;*        In the batch input data, insert a field                                  *&lt;br /&gt;*                                                                                                *&lt;br /&gt;*----------------------------------------------------------------*&lt;br /&gt;FORM BDC_FIELD USING FNAM FVAL.&lt;br /&gt;CLEAR BDCDATA.&lt;br /&gt;BDCDATA-FNAM = FNAM.&lt;br /&gt;BDCDATA-FVAL = FVAL.&lt;br /&gt;APPEND BDCDATA.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP VIII</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-viii.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:48:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-6040307867287524144</guid><description>(18) PROCESSING BATCH INPUT SESSIONS:&lt;br /&gt;&lt;br /&gt;When you create a batch input session, it remains in the batch input queue until it is explicitly started. Session processing can be started in two ways:&lt;br /&gt;&lt;br /&gt;An on-line user can start the session using the batch input menu options. (To access the batch input options, choose System--&gt;Services--&gt;Batch Input.)&lt;br /&gt;&lt;br /&gt;You can submit the background job RSBDCSUB to start a session in background processing. If several sessions have the same name, RSBDCSUB starts them all.&lt;br /&gt;&lt;br /&gt;It's possible to coordinate the generation and execution of a session in the background processing system.&lt;br /&gt;&lt;br /&gt;You can, for example, schedule both the batch input program and RSBDCSUB in the background. If you designate the batch input job as the predecessor for RSBDCSUB, then RSBDCSUB will be started automatically when the batch input job successfully completes.&lt;br /&gt;&lt;br /&gt;Alternatively, you can schedule both the batch input program and RSBDCSUB as job steps in a single background job. In this case, however, RSBDCSUB is started even if the batch input program should terminate abnormally.&lt;br /&gt;&lt;br /&gt;For detailed information about processing batch input sessions, see MANAGING BATCH INPUT SESSIONS(B) in the System Services guide. You'll find this guide in the Basis library, system administration section, on the SAP documentation CD-ROM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(19)  USING CALL TRANSACTION USING FOR BATCH INPUT:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processing batch input data with CALL TRANSACTION USING is the faster of the two recommended batch input methods. In this method, batch input data is processed inline in your batch input program.&lt;br /&gt;&lt;br /&gt;Error recovery, restarting, and management of batch input processing are all more comfortable if you use "classical" batch input processing by way of batch input sessions. CALL TRANSACTION USING is therefore recommended only if batch input sessions do not run fast enough to meet your requirements.&lt;br /&gt;&lt;br /&gt;For more information on choosing a batch input method, please see Selecting a Batch-Input Method(11) .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A program that uses CALL TRANSACTION USING to submit batch input should perform the following steps:&lt;br /&gt;&lt;br /&gt;1. Prepare a BDCDATA structure for the transaction that you wish to run. The requirements for filling the BDCDATA structure are the same as for "classical" batch input using sessions. For more information, please see Using the Batch Input Data Structure(12).&lt;br /&gt;&lt;br /&gt;2. With a CALL TRANSACTION USING statement, call the transaction and pass the BDCDATA structure to it as batch input. For example:&lt;br /&gt;&lt;br /&gt;CALL TRANSACTION 'SE38' USING BDCDATA&lt;br /&gt;    MODE 'A'&lt;br /&gt;    UPDATE 'S'.&lt;br /&gt; MESSAGES INTO MESSTAB.&lt;br /&gt;&lt;br /&gt;The Mode Parameter&lt;br /&gt;&lt;br /&gt;The MODE parameter lets you specify whether the batch input processing should be displayed to you as it happens. You can choose between three modes:&lt;br /&gt;&lt;br /&gt;A Display everything.&lt;br /&gt;All screens and the data that goes in them appear when you run your program. This is the default setting for MODE in CALL TRANSACTION USING.&lt;br /&gt;&lt;br /&gt;N Display nothing.&lt;br /&gt;All screens are processed invisibly, regardless of whether there are errors or not. Control returns to your program as soon as transaction processing is finished. (Database updates however, may have taken place or may have not have taken place, depending on the value of the UPDATE parameter.)&lt;br /&gt;&lt;br /&gt;E Display errors only. The transaction goes into display mode as soon as an error in one of the screens is detected. You can then correct the error.&lt;br /&gt;&lt;br /&gt;The display modes are the same as those that are available for processing batch input sessions.&lt;br /&gt;&lt;br /&gt;The Update Parameter&lt;br /&gt;&lt;br /&gt;The UPDATE parameter lets you specify how updates produced by a transaction should be processed. You can select between these modes:&lt;br /&gt;&lt;br /&gt;A Asynchronous updating.&lt;br /&gt;&lt;br /&gt;In this mode, the called transaction does not wait for any updates it produces to be completed. It simply passes the updates to the SAP update service.Asynchronous processing therefore usually results in faster execution of your batch input program.&lt;br /&gt;&lt;br /&gt;Asynchronous processing is NOT recommended for processing any larger amount of data. This is because the called transaction receives no completion message from the update module in asynchronous updating. The calling batch input program, in turn, cannot determine whether a called transaction ended with a successful update of the database or not.&lt;br /&gt;&lt;br /&gt;If you use asynchronous updating, then you will need to use the update management facility (transaction SM12) to check whether updates have been terminated abnormally during session processing. Error analysis and recovery is less convenient than with synchronous updating.&lt;br /&gt;&lt;br /&gt;S Synchronous updating.&lt;br /&gt;&lt;br /&gt;In this mode, the called transaction waits for any updates that it produces to be completed. Execution is slower than with asynchronous updating because called transactions wait for updating to be completed. However, the called transaction is able to return any update error message that occurs to your program. It's much easier for you to analyze and recover from errors.&lt;br /&gt;&lt;br /&gt;L Local updating.&lt;br /&gt;&lt;br /&gt;If you update data locally, the update of the database will not be processed in a separate process, but in the process of the calling program. (Refer to the keyword documentation of SET UPDATE TASK LOCAL for more information.)&lt;br /&gt;&lt;br /&gt;The Messages Parameter&lt;br /&gt;&lt;br /&gt;The MESSAGES specification indicates that all system messages issued during a CALL TRANSACTION USING are written into the internal table &lt;messtab&gt;. The internal table must have the structure BDCMSGCOLL.&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;Example&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;You can have system messages issued by transaction SE38 (bottom of example) collected in table MESSTAB with the following coding:&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;DATA BEGIN OF BDCDATA OCCURS 100.                &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;        INCLUDE STRUCTURE BDCDATA.                &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; DATA END OF BDCDATA.                             &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;                                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; DATA BEGIN OF MESSTAB OCCURS 10.                 &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;        INCLUDE STRUCTURE BDCMSGCOLL.             &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; DATA END OF MESSTAB.                             &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;                                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; DATA REPORT(8).                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;                                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; BDCDATA-PROGRAM  = 'SAPMS38M'.                   &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; BDCDATA-DYNPRO   = '0100'.                       &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; BDCDATA-DYNBEGIN = 'X'.                          &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; APPEND BDCDATA.                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; CLEAR BDCDATA.                                   &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; BDCDATA-FNAM     = 'RS38M-PROGRAMM'.             &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; BDCDATA-FVAL     = REPORT.                       &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; APPEND BDCDATA.                                  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; ...                                              &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; CALL TRANSACTION 'SE38'  USING BDCDATA  MODE 'N' &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;                          MESSAGES INTO MESSTAB.  &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;The following figures show the return codes from CALL TRANSACTION USING and the system fields that contain message information from the called transaction. As the return code chart shows, return codes above 1000 are reserved for batch input. &lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt; If you use the MESSAGES INTO &lt;message table=""&gt; option, then you do not need to query the system fields shown below; their contents are automatically written into the message table. You can loop over the message table to write out any messages that were entered into it.&lt;/message&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;message table=""&gt;&lt;/message&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;message table=""&gt;&lt;/message&gt;&lt;/messtab&gt;&lt;br /&gt;&lt;messtab&gt;&lt;message table=""&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/message&gt;&lt;/messtab&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP VII</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-vii.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:47:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-3254369626322275884</guid><description>(14) CREATING BATCH INPUT SESSIONS:&lt;br /&gt;&lt;br /&gt;One of the two recommended ways to process batch input data is to store the data in a batch input session. This session can then be run in the SAP System to enter the batch input data into the system.&lt;br /&gt;&lt;br /&gt;In general, preparing a session is the best and most comfortable way to process batch input data.&lt;br /&gt;&lt;br /&gt;However, you may wish to use the alternate method, CALL TRANSACTION USING, if your batch input sessions cannot be run quickly enough. For more information on choosing the best batch input method, see Selecting a Batch-Input Method(11) .&lt;br /&gt;&lt;br /&gt;Creating, Filling, and Closing a Batch Input Session&lt;br /&gt;&lt;br /&gt;To create a session, program the following procedure using the following BDC_ function modules:&lt;br /&gt;&lt;br /&gt;1. Open the batch input session using function module BDC_OPEN_GROUP(15) .&lt;br /&gt;2. For each transaction in the session:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;a. Fill the BDCDATA structure with values for all screens and fields that must be processed in the transaction. For more information, please see Using the Batch Input Data Structure(12).&lt;br /&gt;b. Transfer the transaction to the session with BDC_INSERT(16) .&lt;br /&gt;&lt;br /&gt;3. Close the batch input session with BDC_CLOSE_GROUP(17).&lt;br /&gt;&lt;br /&gt;The following topics describe these function modules. See Sample Batch Input Program(22) for an example of how the function modules are used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(15) CREATING A SESSION WITH BDC_OPEN_GROUP :&lt;br /&gt;&lt;br /&gt;Use the BDC_OPEN_GROUP function module to do the following create a new session. Once you have created a session, then you can insert batch input data into it with BDC_INSERT.&lt;br /&gt;&lt;br /&gt;You cannot re-open a session that already exists and has been closed. If you call BDC_OPEN_GROUP with the name of an existing session, then an additional session with the same name is created.&lt;br /&gt;&lt;br /&gt;A batch input program may have only one session open at a time. Before opening a session, make sure that any sessions that the program closes any sessions that it previously had opened.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BDC_OPEN_GROUP takes the following EXPORTING parameters:&lt;br /&gt;&lt;br /&gt;CLIENT&lt;br /&gt;&lt;br /&gt;            Client in which the session is to be processed.&lt;br /&gt;Default: If you don't provide a value for this parameter, the default is the client under which the batch input program runs when the session is created.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GROUP&lt;br /&gt;&lt;br /&gt;Name of the session that is to be created.  May be up to 12 characters long.&lt;br /&gt;          Default:  None.  You must specify a session name.&lt;br /&gt;&lt;br /&gt;HOLDDATE&lt;br /&gt;&lt;br /&gt;Lock date. The session is locked and may not be processed until after the date that you specify.Only a system administrator with the LOCK authorization for the authorization object Batch Input Authorizations can unlock and run a session before this date.&lt;br /&gt;         Format:  YYYYMMDD (8 digits).&lt;br /&gt;         Default:  No lock date, session can be processed immediately.  A lock date is optional.&lt;br /&gt;&lt;br /&gt;KEEP&lt;br /&gt;&lt;br /&gt;Retain session after successful processing. Set this option to the value X to have a session kept after it has been successfully processed. A session that is kept remains in the input/output queue until an administrator deletes it.&lt;br /&gt;&lt;br /&gt;Sessions that contain errors in transactions are kept even if KEEP is not set.&lt;br /&gt;Default:  If not set, then sessions that are successfully processed are deleted.  Only the  batch input log is kept.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;USER&lt;br /&gt;&lt;br /&gt;Authorizations user for background processing. This is the user name that is used for checking authorizations if a session is started in background processing. The user must be authorized for all of the transactions and functions that are to be executed in a session.Otherwise, transactions will be terminated with "no authorization" errors.&lt;br /&gt;&lt;br /&gt;The user can be of type dialog or background. Dialog users are normal interactive users in the SAP System. Background users are user master records that are specially defined for providing authorizations for background processing jobs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(16) ADDING DATA TO A SESSION:  BDC_INSERT :&lt;br /&gt;&lt;br /&gt;Use the BDC_INSERT function module to add a transaction to a batch input session. You specify the transaction that is to be started in the call to BDC_INSERT. You must provide a BDCDATA structure that contains all of the data required to process the transaction completely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BDC_INSERT takes the following  parameters:&lt;br /&gt;&lt;br /&gt;TCODE&lt;br /&gt;&lt;br /&gt;The code of the transaction that is to be run.&lt;br /&gt;For help in finding the transaction code of a function, see Analyzing SAP           Transactions(4) .&lt;br /&gt;TCODE is an EXPORTING parameter in the function module.&lt;br /&gt;&lt;br /&gt;POST_LOCAL&lt;br /&gt;&lt;br /&gt;Parameter to update data locally. If POST_LOCAL = 'X', data will be updated locally.(refer to the keyword documentation of SET UPDATE TASK LOCAL for more information)&lt;br /&gt;&lt;br /&gt;DYNPROTAB&lt;br /&gt;&lt;br /&gt;The BDCDATA structure that contains the data that is to be processed by the              transaction.&lt;br /&gt;DYNPROTAB is a tables parameter in the function module.&lt;br /&gt;For information on filling the structure, see Programming Techniques: Entering Data and Executing Functions(13).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(17) CLOSING A SESSION:  BDC_CLOSE_GROUP :&lt;br /&gt;&lt;br /&gt;Use the BDC_CLOSE_GROUP function module to close a session after you have inserted all of your batch input data into it. Once a session is closed, it can be processed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BDC_CLOSE_GROUP needs no parameters.  It automatically closes the session that is currently open in your program.&lt;br /&gt;&lt;br /&gt;You must close a session before you can open another session from the same program.&lt;br /&gt;&lt;br /&gt;You cannot re-open a session once it has been closed. A new call to BDC_OPEN_GROUP with the same session name creates a new session with the same name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP VI</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-vi.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:47:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-4146319563063708767</guid><description>(13) PROGRAMMING TECHNIQUES :&lt;br /&gt;&lt;br /&gt;ENTERING DATA AND EXECUTING&lt;br /&gt;&lt;br /&gt;FUNCTIONS:&lt;br /&gt;&lt;br /&gt;a)Sample Code:  Filling the BDCDATA Structure&lt;br /&gt;b)Identifying a Screen&lt;br /&gt;c)Entering a Value in a Field&lt;br /&gt;d)Executing a Function&lt;br /&gt;e)Entering Values in Loop Fields&lt;br /&gt;f)Positioning the Cursor&lt;br /&gt;g)Ending a Transaction&lt;br /&gt;&lt;br /&gt;a)Sample Code:  Filling the BDCDATA Structure:&lt;br /&gt;&lt;br /&gt;The following form routine shows how the BDCDATA structure should be filled. Build the structure line by line using MOVE and APPEND statements. Before building each line, reset the header line of the internal table with the CLEAR statement.&lt;br /&gt;&lt;br /&gt;Special techniques, such as placing the cursor, are not shown in this example.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;Assume in this example that the BDCDATA structure has been declared as BDCDAT in the ABAP/4 program:&lt;br /&gt;&lt;br /&gt;FORM Fill-BDC-Table&lt;br /&gt;REFRESH BDCDAT&lt;br /&gt;&lt;br /&gt;" Start new DYNPRO&lt;br /&gt;CLEAR BDCDAT&lt;br /&gt;MOVE: &lt;program name=""&gt; TO BDCDAT-PROGRAM.&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;               &lt;dynpro number=""&gt; TO BDCDAT-DYNPRO.&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;                              'X' TO BDCDAT-DYNBEGIN.&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;  APPEND BDCDAT.&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;  " Enter fields and values for DYNPRO&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;  CLEAR BDCDAT.&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;  MOVE: &lt;field name="" 1=""&gt; TO BDCDAT-FNAM.&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;               &lt;field value="" 1=""&gt; TO BDCDAT-FVAL.&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;  APPEND BDCDAT.&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;  CLEAR BDCDAT.&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;  MOVE: &lt;field name="" 2=""&gt; TO BDCDAT-FNAM.&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;               &lt;field value="" 2=""&gt; TO BDCDAT-FVAL.&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  APPEND BDCDAT.&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  ...&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  ...&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  " Start next DYNPRO&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  CLEAR BDCDAT.&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;  MOVE: &lt;program name=""&gt; TO BDCDAT-PROGRAM.&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;               &lt;dynpro number=""&gt; TO BDCDAT-DYNPRO.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;                   'X' TO BDCDAT-DYNBEGIN.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;  APPEND BDCDAT.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;ENDFORM.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;b) Identifying a Screen: &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;The first record for each screen must contain information that identifies the screen: program name, screen name and a start-of-screen indicator. You record this information in the PROGRAM, DYNPRO, and DYNBEGIN fields of the BDCDATA structure. &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;This sample BDCDATA starts a screen. The record specifies the program and screen identifiers. With BDCDATA-DYNBEGIN, the record shows that batch input data for a new screen is starting: &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-PROGRAM = 'sapms38m'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNPRO = '0100'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNBEGIN = 'x'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;APPEND BDCDATA.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;c) Entering a Value in a Field:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;After the dynpro-start record, you must add a record for each field that is to receive a value. You need fill only the FNAM and FVAL fields. &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;This sample BDCDATA enters a value into a field. The FNAM field identifies the target field by its table and field names. FVAL specifies the value that is to be entered: &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'RS38M-FUNC_EDIT'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = 'x'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;APPEND BDCDATA.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;d)Executing a Function: &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;You can execute a function in a transaction by entering the function code or function key number in the command field of an SAP session. You use the FNAM and FVAL fields to enter this information, just as you would for normal screen fields. &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;The command field is identified by a special name in batch input, BDC_OKCODE. This name is constant and always identifies the command field.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;This sample record would execute the save function. It uses the function key assignment of save, which is F11. A function key number must be prefixed with the / (slash) character:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_OKCODE'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = '/11'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;This sample record also executes save, but uses the function code instead of the function key assignment. All functions, whether they are displayed in menus or as buttons, are identified by function codes. A function code must be prefixed with the = character. &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_OKCODE'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = '=UPDA'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;e)Entering Values in Loop Fields&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Some screen fields need multiple values, one on each line. To provide input to one of these loop fields, you must use an explicit line index :&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'fieldx(5)'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = 'value'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;The line index (in the example: (5), line 5) indicates in which loop line on the screen values are to appear.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;f)Positioning the Cursor:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;To position the cursor on a particular field, you must use the special cursor field:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_CURSOR'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = 'fieldx'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;To position the cursor on a loop field, you must use again an index:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_CURSOR'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = 'fieldy(5)'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;g)Ending a Transaction:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;You can successfully complete processing of a transaction in batch input in either of two ways:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt; leave the transaction and return to the SAP main menu. &lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt; trigger an update of the database.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Ending a Transaction&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Example:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;Returning to the SAP main menu: From the text input screen in the ABAP/4 editor, for example, the following BDCDATA records are necessary to leave the transaction:&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-PROGRAM = 'SAPMSEDT'.  "Leave text input field&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNPRO = '2310'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNBEGIN = 'X'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_OKCODE'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = '/3'.  "Back function key&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-PROGRAM = 'SAPMS38M'.  "Leave ABAP/4 editor&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNPRO = '0100'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-DYNBEGIN = 'X'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FNAM = 'BDC_OKCODE'.&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;BDCDATA-FVAL = '/15'.  "Quit function key&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;br /&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;field name="" 1=""&gt;&lt;field value="" 1=""&gt;&lt;field name="" 2=""&gt;&lt;field value="" 2=""&gt;&lt;program name=""&gt;&lt;dynpro number=""&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/dynpro&gt;&lt;/program&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/field&gt;&lt;/dynpro&gt;&lt;/program&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP V</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-v.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:46:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-761450652228109540</guid><description>(11) SELECTING A BATCH-INPUT METHOD:&lt;br /&gt;&lt;br /&gt;When you generate batch input in ABAP/4, you have three options for submitting the data to batch input processing. Only the first two methods can be recommended without reservation. The third method, by way of CALL DIALOG, is outmoded. CALL DIALOG Is less comfortable than the other methods. You should use it only if you must.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create a session on the batch input queue.&lt;br /&gt;&lt;br /&gt;Summary: Standard method. Offers management of sessions, support for playing back and correcting sessions that contain errors, and detailed logging.&lt;br /&gt;&lt;br /&gt;Your program prepares the data and stores it in a batch input session. A session is a collection of transaction data for one or more transactions. Batch input sessions are maintained by the system in the batch input queue. You can process batch input sessions in the background processing system.&lt;br /&gt;&lt;br /&gt;Your program must open a session in the queue before transferring data to it, and must close it again afterwards. All of these operations are performed by making function module calls from the ABAP/4 program.&lt;br /&gt;&lt;br /&gt;The most important aspects of the session interface are:&lt;br /&gt;&lt;br /&gt;Asynchronous processing&lt;br /&gt;Transfers data for multiple transactions&lt;br /&gt;Synchronous database update&lt;br /&gt;&lt;br /&gt;During processing, no transaction is started until the previous transaction has been written to the database.&lt;br /&gt;&lt;br /&gt;A batch input processing log is generated for each session&lt;br /&gt;Sessions cannot be generated in parallel&lt;br /&gt;&lt;br /&gt;The batch input program must not open a session until it has closed the preceding session.&lt;br /&gt;&lt;br /&gt;Use the CALL TRANSACTION USING statement&lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;&lt;br /&gt;Offers faster processing of data than batch input sessions. Recommended if you're having problems getting data entered into your SAP System quickly enough. The playback, interactive correction, and logging facilities offered for batch input sessions are not available for CALL TRANSACTION USING.&lt;br /&gt;Your program prepares the data and calls the desired transaction for immediate processing.&lt;br /&gt;&lt;br /&gt;The most important aspects of the CALL TRANSACTION USING interface are:&lt;br /&gt;&lt;br /&gt;Synchronous processing&lt;br /&gt;Transfers data for a single transaction&lt;br /&gt;Synchronous and asynchronous database updating both possible&lt;br /&gt;The program specifies which kind of updating is desired.&lt;br /&gt;Separate LUW for the transaction&lt;br /&gt;The system performs a database commit immediately before and after the CALL             TRANSACTION USING statement.&lt;br /&gt;No batch input processing log is generated&lt;br /&gt;&lt;br /&gt;Use the CALL DIALOG statement&lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;&lt;br /&gt;Not recommended if you can enter data by way of sessions or CALL TRANSACTION USING.&lt;br /&gt;Your program prepares data for a sequence of dialog screens, and calls a dialog module for immediate processing.&lt;br /&gt;&lt;br /&gt;The most important aspects of the CALL DIALOG interface are:&lt;br /&gt;&lt;br /&gt;Synchronous processing&lt;br /&gt;Transfers data for a sequence of dialog screens&lt;br /&gt;No separate database update for the dialog&lt;br /&gt;A database update occurs only when the calling program executes a commit operation.&lt;br /&gt;&lt;br /&gt;Shares LUW with calling program&lt;br /&gt;No batch input processing log is generated&lt;br /&gt;&lt;br /&gt;(12) USING THE BATCH INPUT DATA STRUCTURE:&lt;br /&gt;&lt;br /&gt;The batch input structure stores the data that is to be entered into SAP System and the actions that are necessary to process the data. You can think of the structure as storing the script that the SAP System is to follow in processing batch input data.&lt;br /&gt;&lt;br /&gt;The batch input structure is used by all of the batch input methods. You can use the same structure for all types of batch input, regardless of whether you are creating a session in the batch input queue or using CALL TRANSACTION USING or CALL DIALOG.&lt;br /&gt;&lt;br /&gt;The diagram below shows how to declare the structure in your ABAP/4 program and the fields contained in the structure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BDCDATA Structure&lt;br /&gt;&lt;br /&gt;Information structure: A BDCDATA structure can contain the batch input data for only a single run of a transaction. The typical processing loop in a program is therefore as follows:&lt;br /&gt;&lt;br /&gt;Create a BDCDATA structure&lt;br /&gt;Write the structure out to a session or process it with CALL TRANSACTION             USING; and then&lt;br /&gt;&lt;br /&gt;Create a BDCDATA structure for the next transaction that is to be processed.&lt;br /&gt;&lt;br /&gt;Within a BDCDATA structure, data is organized by the screens in a transaction. Each screen that is processed in the course of a transaction must be identified with a BDCDATA record. This record uses the Program, Dynpro, and Dynbegin fields of the structure:&lt;br /&gt;&lt;br /&gt;The screen identifier record is followed by a separate BDCDATA record for each value that is to be entered into a field. These records use the FNAM and FVAL fields of the BDCDATA structure. Values to be entered in a field can be any of the following:&lt;br /&gt;&lt;br /&gt;data that is entered into screen fields&lt;br /&gt;function codes that are entered into the command field. Such function codes execute functions in a transaction, such as Save.&lt;br /&gt;cursor-positioning commands.&lt;br /&gt;&lt;br /&gt;The transaction to which a BDCDATA structure refers is identified separately. If your program writes data to a batch input session, then the transaction is specified in the call to the BDC_INSERT function module. This function module writes a BDCDATA structure out to the session. If your program processes data with CALL TRANSACTION USING, then the transaction is specified directly in this statement.&lt;br /&gt;&lt;br /&gt;The following table shows what the contents of a BDCDATA structure might look like. This BDCDATA structure would add a line to a report in transaction SE38, the ABAP/4 Editor:&lt;br /&gt;&lt;br /&gt;BDCDATA Structure for Adding a Line to a Report (Transaction SE38)&lt;br /&gt;&lt;br /&gt;PROGRAM DYNPRO DYNBEGIN FNAM                           FVAL&lt;br /&gt;-----------------   -------------        -----------------   --------------------------       ----------&lt;br /&gt;SAPMS38M 0100                    X&lt;br /&gt;                                     RS38M-PROGRAMM     &lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;                                                  RS38M-FUNC_EDIT        X&lt;/name&gt;&lt;br /&gt;&lt;name&gt; BDC_OKCODE =CHAP (Change function code)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;SAPMSEDT 2310                   X  &lt;/name&gt;&lt;br /&gt;&lt;name&gt;                                           RSTXP-TDLINECOM(1) B-&lt;/name&gt;&lt;br /&gt;&lt;name&gt;SAPMSEDT 2310                   X  &lt;/name&gt;&lt;br /&gt;&lt;name&gt; BDC_CURSOR RSTXP- TDLINECOM(1)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;                                               RSTXP-TDLINE(1)       BDC Test Text&lt;/name&gt;&lt;br /&gt;&lt;name&gt; BDC_OKCODE /11 (Save function key)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;SAPMSEDT 2310                  X  &lt;/name&gt;&lt;br /&gt;&lt;name&gt; BDC_OKCODE /3 (Back function key)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;SAPMS38M 0100                  X  &lt;/name&gt;&lt;br /&gt;&lt;name&gt; BDC_OKCODE /15 (Quit function key)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;Fields:  The fields in the BDCDATA structure are as follows:&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; PROGRAM&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; Name of the program. Length (8). The PROGRAM field is not case-sensitive. Set this field only in the first record for the screen.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; DYNPRO&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;Number of the screen. Length (4). Set this field only in the first record for the screen.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; DYNBEGIN&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; Indicates the first record for the screen. Length (1). Set this field to X only in the first record for the screen. (Reset to ' ' (blank) for all other records.)&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; FNAM&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; Name of a field in the screen. Length (35). The FNAM field is not case-sensitive. &lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; FVAL&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt; Value for the field named in FNAM. Length (132). The FVAL field is case-sensitive. Values assigned to this field are always padded on the right if they are less than 132 characters. Values must be in character format.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;Finding function codes and program and field names:  Please see Analyzing SAP Transactions(4)  for more information.&lt;/name&gt;&lt;br /&gt;&lt;name&gt; &lt;/name&gt;&lt;br /&gt;&lt;name&gt;Data formatting requirements:  Please see Data Conversions(6) for more information. &lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/name&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP IV</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-iv.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:45:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-595743227132749816</guid><description>(5) GENERATING AN SAP DATA STRUCTURE:&lt;br /&gt;&lt;br /&gt;You can use the ABAP/4 Dictionary to generate data structures for SAP tables in any of the following programming languages:&lt;br /&gt;&lt;br /&gt;Cobol&lt;br /&gt;PL/1&lt;br /&gt;C&lt;br /&gt;&lt;br /&gt;You can then incorporate these data structures in your data conversion program.&lt;br /&gt;&lt;br /&gt;For most of the standard SAP batch input programs, SAP has also provided special data structure identifiers. With such an identifier, you can generate a listing of all of the table fields that are required by the corresponding batch input program. You do not need to find out which tables are required for the batch input program and generate their structures individually. If you are creating your own batch input procedure, you may be able to use the standard field listings as well.&lt;br /&gt;&lt;br /&gt;The names of the special data structure identifiers are documented in the SAP Customizing system. For information on finding the relevant documentation, please see Batch Input Concepts(1).&lt;br /&gt;&lt;br /&gt;Data Transfer Programs in ABAP/4&lt;br /&gt;&lt;br /&gt;If your data transfer program is written in ABAP/4, you can include data structures of tables in your program with the TABLES instruction. The structure is then read directly from the ABAP/4 Dictionary.&lt;br /&gt;&lt;br /&gt;In this case, you cannot use the special data structure identifiers provided by the SAP applications. The identifier names are not recognized by the TABLES instruction. Instead, you can find the required table names by checking the transactions that your batch input procedure will be using to enter data. Or you can find the table names in the listings generated by the special identifiers.&lt;br /&gt;&lt;br /&gt;The diagram below shows the structures of transfer programs in ABAP/4 and as external programs written in other languages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Including Table Structures in Transfer Programs:  ABAP/4 and Other Languages&lt;br /&gt;&lt;br /&gt;Procedure&lt;br /&gt;&lt;br /&gt;To generate a data structure, do the following:&lt;br /&gt;&lt;br /&gt;1. Choose Tools --&gt; ABAP/4 Workbench and then ABAP/4 Dictionary.&lt;br /&gt;2. In the ABAP/4 Dictionary, select Environment --&gt; Generate table description.&lt;br /&gt;&lt;br /&gt;With this function, you can generate the structures of one or a group of SAP tables in programming code. You can then add this code to your data transfer program.&lt;br /&gt;&lt;br /&gt;3. Specify the programming language in which the structure should be generated and identify the tables to be included.&lt;br /&gt;&lt;br /&gt;If you wish to use a special structure identifier for a standard SAP batch input report,then enter the identifier in the Key in TSRCG field. Example: The identifier AM-ANLA generates the data structure required for data transfers for the asset management application.&lt;br /&gt;&lt;br /&gt;4. The system displays the data structure in list form, as in this example in PL/1 from the asset management application (AM-ANLA):&lt;br /&gt;&lt;br /&gt;    ******************************************************************&lt;br /&gt;    *              MEMBER GENERATED FROM SAP DATA DICTIONARY                *&lt;br /&gt;    *                                         T A B L E    BALTD                                                      *&lt;br /&gt;    *                       DATE: 08.12.1995     TIME: 17:47:16                                             *&lt;br /&gt;    *                  PLEASE DO NOT CHANGE MANUALLY                                        *&lt;br /&gt;    ******************************************************************&lt;br /&gt;    *&lt;br /&gt;     01  BALTD.&lt;br /&gt;    *&lt;br /&gt;    * Client (Old Assets Data Takeover AM)&lt;br /&gt;         05   MANDT                   PIC X(3)&lt;br /&gt;                                      VALUE SPACE.&lt;br /&gt;    * Company code&lt;br /&gt;         05   BUKRS                   PIC X(4)&lt;br /&gt;                                      VALUE SPACE.&lt;br /&gt;    * Asset class&lt;br /&gt;         05   ANLKL                   PIC X(8)&lt;br /&gt;                                      VALUE SPACE.&lt;br /&gt;&lt;br /&gt;Choose System --&gt; List --&gt; Save --&gt; File to download the data structure to your workstation or PC.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) DATA CONVERSIONS:&lt;br /&gt;&lt;br /&gt;Use the field descriptions that you obtained in Analyzing SAP Transactions(4) or Generating an SAP Data Structure(5) to determine the following:&lt;br /&gt;&lt;br /&gt;which fields can be taken over directly from your existing data. That is, there is a direct match between an existing data field and the corresponding SAP data field.&lt;br /&gt;&lt;br /&gt;for which fields a conversion procedure is necessary for mapping your existing data to the requirements of the SAP System.&lt;br /&gt;&lt;br /&gt;CoNverting Data from Old Format to SAP Format&lt;br /&gt;&lt;br /&gt;Your program must format batch input values just as an on-line user would when typing them in. In particular:&lt;br /&gt;&lt;br /&gt;The data must be character format.&lt;br /&gt;No piece of data may be longer than its target SAP field.&lt;br /&gt;If the data is shorter than the target field, you must left-justify it within the SAP field (pad it with blanks at the right end).&lt;br /&gt;&lt;br /&gt;(7) INITIALIZING AN SAP DATA STRUCTURE:&lt;br /&gt;&lt;br /&gt;Standard SAP batch input programs require that every field in a data structure contains either:&lt;br /&gt;&lt;br /&gt;a value; or&lt;br /&gt;a special NODATA marker, which indicates that the no batch input data is required for  the field.&lt;br /&gt;&lt;br /&gt;If you are writing your own data transfer program, you should therefore initialize all of the fields in your batch input data structure with the NODATA character. The NODATA character must occupy the first position in the field, as shown in the figure below.&lt;br /&gt;&lt;br /&gt;By default, the NODATA character is the forward slash. To initialize a field to NODATA, you must write this character as the first character in the field value.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If a batch input program finds NODATA in a field, then the program allows the field to default to its standard value in the SAP transaction that contains the field.&lt;br /&gt;&lt;br /&gt;Setting the NODATA marker: You can freely select another character as the NODATA marker. Define the new character in the batch input program that reads the data in the BGR00-NODATA field:&lt;br /&gt;&lt;br /&gt;Data:  &lt;name&gt; like bgr00.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;-NODATA = '&lt;character&gt;'.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; GENERATING A SEQUENTIAL FILE:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;If you are transferring data from a non-SAP System, then you will probably need to use a file as the transfer medium for the data. (For data transfer between SAP Systems, you may be able to use RFC or CPI-C to process data directly in the target SAP System.) &lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;The file that you generate should have the following characteristics:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; All data should be in character format.  This is required by the standard SAP batch             input programs.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; Data must have the logical structure expected by the batch input program.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;For a standard SAP batch input program, this requirement means that you have generated the data structure defined for the batch input program. For more information, see Generating an SAP Data Structure(5).&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;You'll find sample code for reading from and writing to a sequential file in Sample Program:  Data Transfer(9) .&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;(9) SAMPLE PROGRAM: DATA TRANSFER:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;The following ABAP/4 program demonstrates the data transfer process.  The program does the following:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; reads customer address data from a sequential file&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; checks the data for unacceptable records&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; performs conversions on the data &lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt; writes the data back out to a sequential file using the format required by the SAP standard batch input program Batch Input Interface for Customers (ABAP/4 program RFBIDE00).&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;EXAMPLE:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;REPORT BITFER.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;* SAP structures for batch input processing:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;TABLES: BGR00, BKN00, BKNA1.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;* Structure of existing data to be transferred:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;DATA: BEGIN OF OLDREC,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;            TELE1(10) TYPE C,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;            CUSTNR(8) TYPE C,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;            TITLE(2)  TYPE C,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;            NAME1(30) TYPE C,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;      END OF OLDREC.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;* Auxiliary structure for initializing fields:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;DATA: BEGIN OF AUXREC.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;            INCLUDE STRUCTURE BKNA1.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;DATA: END OF AUXREC.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;* SAP fields for converted data:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;DATA: CUSTNR LIKE BKN00-KUNNR,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;      NAME1  LIKE BKNA1-NAME1,&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;      TELE1  LIKE BKNA1-TELF1.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;* For initializing fields:&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;DATA: N TYPE I.&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;FIELD-SYMBOLS &lt;f&gt;.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;* File and session names, NODATA character:&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;PARAMETERS:&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  OLDFILE(20) DEFAULT '/tmp/oldfile' LOWER CASE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  SAPFILE(20) DEFAULT '/tmp/sapfile' LOWER CASE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  ERRFILE(20) DEFAULT '/tmp/errfile' LOWER CASE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  SESSION(20) DEFAULT 'ADDRDAT'      LOWER CASE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  NODATA      DEFAULT '/'            LOWER CASE.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;START-OF-SELECTION.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  OPEN DATASET: OLDFILE FOR  INPUT IN TEXT MODE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;                SAPFILE FOR OUTPUT IN TEXT MODE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;                ERRFILE FOR OUTPUT IN TEXT MODE.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;* Open batch input session as first SAPFILE entry: &lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;* program:&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  MOVE: 'O'      TO BGR00-STYPE,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;        SESSION  TO BGR00-GROUP,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;        SY-MANDT TO BGR00-MANDT,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;        SY-UNAME TO BGR00-USNAM,&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;        NODATA   TO BGR00-NODATA. &lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  TRANSFER BGR00 TO SAPFILE.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;* Initialize data fields with NODATA:&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;  DO.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;    ADD 1 TO N.&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;    ASSIGN COMPONENT N OF STRUCTURE AUXREC TO &lt;f&gt;.&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;    IF SY-SUBRC NE 0. EXIT. ENDIF.&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;    MOVE BGR00-NODATA TO &lt;f&gt;.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  ENDDO.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  MOVE AUXREC TO BKNA1.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;* Read and convert existing data:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  DO.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Read data record:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    READ DATASET OLDFILE INTO OLDREC.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    IF SY-SUBRC NE 0. EXIT. ENDIF.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Check data and transfer only certain records:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    IF OLDREC-CUSTNR(5) NE 'AABBC'&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    OR OLDREC-CUSTNR(6) EQ 'AABBCD'&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    OR OLDREC-TELE1     EQ  SPACE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;       TRANSFER OLDREC TO ERRFILE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;*      TEXT-001: 'Data not transferred for customer:'&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;       WRITE: / TEXT-001, OLDREC-CUSTNR.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    ELSE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Convert the customer number to SAP convention:     &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;      IF OLDREC-CUSTNR+5(1) = 'C'.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;        IF OLDREC-CUSTNR+5(1) = 'D'.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;      ENDIF.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Convert abbreviations to full words:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    CASE OLDREC-TITLE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;         WHEN 'Co'.   BKNA1-TITLE = 'Company'.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;         WHEN 'Corp'. BKNA1-TITLE = 'Corporation'.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;         WHEN OTHERS. BKNA1-TITLE = NODATA.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    ENDCASE. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Convert records from old format to SAP format:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    MOVE: OLDREC-CUSTNR TO CUSTNR,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          OLDREC-NAME1  TO NAME1,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          OLDREC-TELE1  TO TELE1.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Fill SAP structures:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    MOVE: '1'     TO BKNOO-STYPE,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          'XD02'  TO BKNOO-TCODE,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          CUSTNR  TO BKNOO-CKUNNR.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    MOVE: '2'     TO BKNA1-STYPE,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          'BKNA1' TO BKNA1-TBNAM,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          'TELE1  TO BKNA1-TELF1,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;          NODATA  TO BNKA1-SENDE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  " Transfer data to SAPFILE:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    TRANSFER: BKNOO TO SAPFILE,&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;              BKNA1 TO SAPFILE.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;*   TEXT-02: 'Data was transferred for customer:'&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    WRITE: / TEXT-002, OLDREC-CUSTNR, BKNOO-CUSTNR.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;    ENDIF.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  ENDDO.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  CLOSE DATASET: OLDFILE, SAPFILE, ERRFILE. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;(10) WRITING A BATCH INPUT PROGRAM:  PROCEDURE IN OVERVIEW:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;In general, you can transfer data from an existing system into the SAP System with pre-defined batch input programs, delivered with the SAP System. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;In some cases, however, you will need to write your own batch input program. For example, the standard SAP batch input programs in an application may not have foreseen the data transfer requirement you have, or you may wish to customize the standard data transfer procedure.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;To write your own batch input program, you'll need to do the following:  &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;1. Analyze the transaction(s) that you will use to process your batch input data.  &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; You may have already done this when you wrote your data transfer program. Please see Writing a Data Transfer Program(3) and Analyzing SAP Transactions(4) for more information. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;2. Decide on the batch-input method that you wish to use.  &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; "Classical" batch input -- by way of a batch input session -- is more comfortable. Restart-capability and detailed logging are supported by the batch input management transaction for batch input sessions.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; Batch input by way of CALL TRANSACTION USING offers faster processing if you need it to get your batch input done in the time slot that is available for it. CALL TRANSACTION USING offers, however, less support for error recovery and management of batch input. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; For detailed information, please see Selecting a Batch-Input Method(11) .&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;3. Write the batch input program.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;  Your program will need to do the following:&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; read data in, often from a sequential file that has been exported from another  system or prepared by a data transfer program&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; if necessary, perform data conversions or error-checking&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt; prepare the data for batch input processing by storing the data in the batch input data structure, BDCDATA.&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;generate a batch input session for classical batch input, or process the data directly  with CALL TRANSACTION USING. &lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;name&gt;&lt;character&gt;&lt;f&gt;&lt;f&gt;&lt;f&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/character&gt;&lt;/name&gt;&lt;/name&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP III</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-iii.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:45:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-4208833377628601293</guid><description>(3) WRITING A DATA TRANSFER PROGRAM:&lt;br /&gt;&lt;br /&gt;The data transfer program is responsible for doing the following:&lt;br /&gt;&lt;br /&gt;Converting the data that is to be transferred into the SAP System as required by the SAP data structure or transactions that you are using.&lt;br /&gt;&lt;br /&gt;The data structure may be generated from the standard SAP data structures (see Generating an SAP Data Structure(5)). This is required if you are working with a standard SAP batch input program. Or, if you are creating your own batch input procedure, you may have developed the data structure yourself by analyzing the SAP transactions with which the data is to be entered.&lt;br /&gt;&lt;br /&gt;A conversion may be necessary for data type and length. The data type required by all standard SAP batch input programs is C, character data. You can find the required field lengths either in your analysis of the SAP data entry transactions or in the data structures that you generate in the ABAP/4 Dictionary.&lt;br /&gt;&lt;br /&gt;Exporting the data in SAP format to a sequential file. The batch input program in the SAP System reads the data in from this file.&lt;br /&gt;&lt;br /&gt;Task Overview&lt;br /&gt;&lt;br /&gt;The tasks involved in writing a data transfer program are shown in the diagram and list below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Writing a Transfer Program&lt;br /&gt;&lt;br /&gt;The procedure:&lt;br /&gt;&lt;br /&gt;1. Analyze the structure of your existing data and specify the conversions that are required to fill the SAP data structures.&lt;br /&gt;2. Generate the SAP data structure in code form and insert it into your program.&lt;br /&gt;&lt;br /&gt;If the program is written in ABAP/4, you need only include the required tables in your program with the TABLES statement.&lt;br /&gt;&lt;br /&gt;3. Initialize the SAP data structure.&lt;br /&gt;4. Fill the structure with data, performing any conversions and error-checking that are required.&lt;br /&gt;5. Write the sequential file that is typically required for making the data available to the batch input program in the SAP System.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(4) ANALYZING SAP TRANSACTIONS:&lt;br /&gt;&lt;br /&gt;If you are creating your own batch input procedure, then you will need to analyze the SAP transaction(s) with which the batch input data is to be entered into the SAP System.&lt;br /&gt;&lt;br /&gt;The purpose of the analysis is to gather the following information:&lt;br /&gt;&lt;br /&gt;the transaction code, if you do not already know it&lt;br /&gt;which fields require input&lt;br /&gt;which fields you can allow to default to standard values&lt;br /&gt;the names, types, and lengths of the fields that are used by a transaction&lt;br /&gt;the identifiers of the functions that you will need to call to have the transaction process the batch input data.&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;Collecting Transaction Data&lt;br /&gt;&lt;br /&gt;To analyze a transaction, do the following:&lt;br /&gt;&lt;br /&gt;1. Start the transaction by menu or by entering the transaction code in the command field.&lt;br /&gt;&lt;br /&gt;You can determine the transaction name by choosing System --&gt; Status.&lt;br /&gt;&lt;br /&gt;2. Step through the transaction, entering the data and performing the functions that will be required for processing your batch input data.&lt;br /&gt;&lt;br /&gt;3. On each screen, note the program name and screen (dynpro) number.&lt;br /&gt;&lt;br /&gt;Display these by choosing System --&gt; Status.  The relevant fields are Program (dynpro)and Dynpro number.&lt;br /&gt;&lt;br /&gt;If pop-up windows occur during execution, you can get the program name and screen number by pressing F1 on any field or button on the screen. The Technical info pop-up shows not only the field information but also the program and screen.&lt;br /&gt;&lt;br /&gt;4. For each field, check box, and radio button on each screen, press F1 (help) and then  choose Technical info.&lt;br /&gt;&lt;br /&gt;Note the following information:&lt;br /&gt;&lt;br /&gt;The field name for batch input, which you'll find in its own box.&lt;br /&gt;The length and data type of the field. You can display this information by double- clicking on the Data element field.&lt;br /&gt;&lt;br /&gt;5. Find out the identification code for each function (button or menu) that you must execute  to process the batch input data.&lt;br /&gt;&lt;br /&gt;Put the cursor on the button or menu entry while holding down the left mouse button. Then press F1. In the pop-up window that follows, choose Technical info and note the code that is shown in the Function field.&lt;br /&gt;&lt;br /&gt;You can also run any function that is assigned to a function key by way of the function key number. To display the list of available function keys, click on the right mouse button. Note the key number that is assigned to the functions you want to run.&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;Getting Screen and Field Information in the Transaction Interface&lt;br /&gt;&lt;br /&gt;Using the Screen Painter and Menu Painter to Get Field and Function Info&lt;br /&gt;&lt;br /&gt;You can also obtain field and function information from the screen and menu definitions in the ABAP/4 screen painter and menu painter. For example, you can quickly display field information in the screen painter by displaying the screen in the Fullscreen editor and using the Attribs. for 1 field button for each field.&lt;br /&gt;&lt;br /&gt;          &lt;br /&gt;&lt;br /&gt;Getting Field Information in the Screen Painter&lt;br /&gt;&lt;br /&gt;Similarly, you can get function and menu codes from the CUA definition of a screen in the menu painter.&lt;br /&gt;See the ABAP/4 Development Workbench documentation for more information on using these tools.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP II</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-ii.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:44:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-8840079737391575361</guid><description>B.MANAGING  BATCH-INPUT SESSION.&lt;br /&gt;&lt;br /&gt;Batch input sessions enter data non-interactively into an R/3 System. Batch input is typically used to transfer data from non-R/3 Systems to R/3 Systems or to transfer data between R/3 Systems.&lt;br /&gt;&lt;br /&gt;This section describes how to manage batch input sessions.&lt;br /&gt;To reach the main menu of the batch input system, select System --&gt; Services --&gt; Batch input.&lt;br /&gt;&lt;br /&gt;Overview and Concepts&lt;br /&gt;&lt;br /&gt;a) Task Overview:  Batch Input&lt;br /&gt;b) Batch Input: Concepts&lt;br /&gt;&lt;br /&gt;Working with Batch Input Sessions&lt;br /&gt;&lt;br /&gt;c) Processing Sessions Automatically&lt;br /&gt;d) Selecting Sessions&lt;br /&gt;e) Running Sessions&lt;br /&gt;f) Correcting a Session&lt;br /&gt;g) Deleting Sessions&lt;br /&gt;h) Locking and Unlocking Sessions&lt;br /&gt;i) Releasing and Restarting an Interrupted Session&lt;br /&gt;&lt;br /&gt;Information and Analysis&lt;br /&gt;&lt;br /&gt;j) Displaying Queue Management Information&lt;br /&gt;k) Displaying Session Logs&lt;br /&gt;l) Reorganizing the Log File&lt;br /&gt;m) Analyzing Sessions&lt;br /&gt;&lt;br /&gt;a) Task Overview: Batch Input.&lt;br /&gt;&lt;br /&gt;With the functions of the batch input management system, you can do the following:&lt;br /&gt;&lt;br /&gt;Start batch input sessions to enter data into an R/3 System.&lt;br /&gt;For debugging sessions that contain errors, the batch input system offers two modes for  running sessions interactively.&lt;br /&gt;&lt;br /&gt;Schedule the background program that automatically submits sessions for processing in&lt;br /&gt;the background.&lt;br /&gt;&lt;br /&gt;Lock a session until a specified date.&lt;br /&gt;Locking a session prevents it from being run.&lt;br /&gt;&lt;br /&gt;Delete batch input sessions.&lt;br /&gt;&lt;br /&gt;Release a session for re-execution if it has been aborted by a system failure or      &lt;br /&gt;shutdown while being created or executed.&lt;br /&gt;&lt;br /&gt;Analyze a batch input session before or after it has run.&lt;br /&gt;The analysis function lets you display data entered in the transactions in a session.  You can:&lt;br /&gt;&lt;br /&gt;display the screens called by the session with the session data filled in.&lt;br /&gt;display listings of input fields by field name, with the session data for each field.&lt;br /&gt;&lt;br /&gt;Display the log produced by a batch input session.&lt;br /&gt;&lt;br /&gt;Functionally:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For help in generating sessions, please see the Basis Programming Interfaces manual.&lt;br /&gt;&lt;br /&gt;b) Batch Input: Concepts:&lt;br /&gt;&lt;br /&gt;Processing Sessions&lt;br /&gt;&lt;br /&gt;A batch input session is a set of one or more calls to transactions along with the data to be processed by the transactions. The system normally executes the transactions in a session non-interactively, allowing rapid entry of bulk data into an R/3 System.&lt;br /&gt;&lt;br /&gt;A session simulates on-line entry of transactions and data. It calls transactions and enters data using most of the facilities that are available to interactive users.&lt;br /&gt;&lt;br /&gt;For example, the data that a session enters into transaction screens is subject to the same consistency checking as in normal interactive operation. Further, batch input sessions are subject to the user-based authorization checking that is performed by the system.&lt;br /&gt;&lt;br /&gt;Generating Sessions&lt;br /&gt;&lt;br /&gt;To transfer data with batch-input, the system that is sending the data uses a data transfer interface provided by an R/3 application program in the receiving system. The interface program in the application then produces a batch input session.&lt;br /&gt;&lt;br /&gt;The interface program in an application is an ABAP/4 program that sets up the transaction calls and data that make up a session. If the batch input session contains data from an external source, the program also reformats the data to meet the requirements of the input fields in which the data is to be entered. Usually, such programs are provided by the R/3 applications. For more information, please see the documentation of the R/3 applications.&lt;br /&gt;&lt;br /&gt;Authorizations&lt;br /&gt;&lt;br /&gt;When a session is generated, a client and user are associated with it. If the session is run in background-processing mode, the system uses this user for authorization checking as the session runs. This authorization testing applies whether you sent the job for batch execution or the session was started by a background job.&lt;br /&gt;&lt;br /&gt;Sessions that you process in one of the interactive modes are run with your authorizations. The interactive modes are described later in this section.&lt;br /&gt;&lt;br /&gt;c) Processing Sessions Automatically:&lt;br /&gt;&lt;br /&gt;In most systems, sessions are started non-interactively with a background job that periodically checks for and starts any sessions that have not yet been run. Running sessions interactively is usually reserved for testing sessions or correcting sessions.&lt;br /&gt;&lt;br /&gt;To start batch input sessions automatically, schedule the ABAP/4 program RSBDCSUB for repeated execution. The program schedules sessions for immediate execution in the background processing system.&lt;br /&gt;&lt;br /&gt;With RSBDCSUB, you can use all of the selection criteria offered on the batch input main menu to select sessions to run:&lt;br /&gt;&lt;br /&gt;session name&lt;br /&gt;date and time of generation&lt;br /&gt;status:  ready to run or held in the queue because of errors&lt;br /&gt;&lt;br /&gt;d) Selecting Sessions:&lt;br /&gt;&lt;br /&gt;To reach the main menu for managing batch input sessions, select System --&gt; Service  --&gt;&lt;br /&gt;Batch input.  On the main menu, you can select sessions using any or all of the following criteria:&lt;br /&gt;&lt;br /&gt;session name&lt;br /&gt;date on which the session was generated (entered into the session queue)&lt;br /&gt;session status&lt;br /&gt;&lt;br /&gt;You can also select from one of two actions:&lt;br /&gt;&lt;br /&gt;To display the session queue, select Session --&gt; Overview.&lt;br /&gt;You can start, analyze, or delete sessions in the queue.&lt;br /&gt;&lt;br /&gt;To display session log files, select Session --&gt; Logs.&lt;br /&gt;&lt;br /&gt;All sessions generate a log when they are run. From the list of session logs, you can take further actions, such as analyzing a session.&lt;br /&gt;&lt;br /&gt;The Session Queue&lt;br /&gt;&lt;br /&gt;The information in the session queue includes the following:&lt;br /&gt;&lt;br /&gt;Date and Time:  The date and time when a session was generated (entered in the &lt;br /&gt;session queue).&lt;br /&gt;Locked:  If a session is locked, this column shows the date upon which the system           &lt;br /&gt;releases the session.  A locked session cannot be started.&lt;br /&gt;Created by:  The user who generated the session.&lt;br /&gt;Tran. and Screen:  The number of transactions and screens, respectively, that remain to  be processed in a session.&lt;br /&gt;&lt;br /&gt;Auth. user:  The user under whose authorizations the session will be run if it is submitted  for batch execution.&lt;br /&gt;&lt;br /&gt;You can display statistics on the transactions in any session by marking the session and using the Statistics function.&lt;br /&gt;&lt;br /&gt;Session Sorting and Status&lt;br /&gt;&lt;br /&gt;Sessions in the session queue are sorted by date and time of generation and are grouped in different lists according to their status.&lt;br /&gt;&lt;br /&gt;        possible statuses are as follows:&lt;br /&gt;&lt;br /&gt;not yet processed&lt;br /&gt;&lt;br /&gt;The Tran. and Screen fields in the display show how many transactions and screens,&lt;br /&gt;respectively, the session contains.&lt;br /&gt;&lt;br /&gt;held in the session queue because of errors in transactions (Errors in sessions)&lt;br /&gt;&lt;br /&gt;Transactions that contained errors are aborted; all correct transactions are processed.&lt;br /&gt;The Tran. and Screen fields in the session display show how many incorrect       &lt;br /&gt;transactions were found in the session.&lt;br /&gt;You can restart a session and correct the erroneous transactions with one of the interactive execution modes offered by the batch input system. For more information, please see Correcting a Session(f).&lt;br /&gt;&lt;br /&gt;processed&lt;br /&gt;&lt;br /&gt;For further information on a session that has been successfully run, you can display the log generated by the session. All completed sessions generate a log. You cannot run a completed session a second time.&lt;br /&gt;&lt;br /&gt;Only sessions that were generated with the KEEP option are held in the queue after       &lt;br /&gt;processing.  Other sessions are deleted after they are successfully completed.&lt;br /&gt;&lt;br /&gt;in generation&lt;br /&gt;&lt;br /&gt;You will usually see this status only if you happen to display the queue while a session is being generated (entered into the session queue).&lt;br /&gt;&lt;br /&gt;You can also encounter this status if a system failure has interrupted the generation of a session. If you suspect that a session has been interrupted, please see Releasing and Restarting an Interrupted Session(i) for more information.&lt;br /&gt;&lt;br /&gt;in process&lt;br /&gt;&lt;br /&gt;You will usually see this status only if you happen to display the queue while a session is  being run.&lt;br /&gt;&lt;br /&gt;You can also encounter this status if a system failure has interrupted the execution of a session. If you suspect that a session has been interrupted, please see Releasing and Restarting an Interrupted Session(i) for more information.&lt;br /&gt;&lt;br /&gt;e) Running Sessions:&lt;br /&gt;&lt;br /&gt;Running a batch input session executes the transactions in the session and enters data into an R/3 System.&lt;br /&gt;To start a session, select Session ® Overview from the main batch input screen. Then mark the session(s) that you wish to start and select Session ® Process or ® Process in batch.&lt;br /&gt;You can start any session in the not yet processed list that is not locked. With Process/foreground or mode, you can also re-start transactions that have the status Incorrect. Sessions with the status Processed cannot be run again.&lt;br /&gt;&lt;br /&gt;Run Modes&lt;br /&gt;&lt;br /&gt;There are three ways to run a session:&lt;br /&gt;&lt;br /&gt;         &lt;br /&gt;Process/foreground: You can interactively correct transactions that contained errors and step through transactions that have not yet been executed.&lt;br /&gt;&lt;br /&gt;Display errors only: This mode is like Process/foreground except that transactions that have not yet been run and which do not contain errors are run non-interactively.&lt;br /&gt;&lt;br /&gt;If an error occurs, processing stops and the screen upon which the error occurred is displayed.&lt;br /&gt;&lt;br /&gt;Process in Batch:  Use batch mode to schedule a session for immediate processing in the batch facility.&lt;br /&gt;&lt;br /&gt;You receive control of your terminal again as soon as the session has been passed to the batch system.  &lt;br /&gt;&lt;br /&gt;Note that your session is automatically released for processing in the background processing system. You need not explicitly release the session for processing.&lt;br /&gt;A completed session is handled in one of three ways:&lt;br /&gt;&lt;br /&gt;The system deletes a session from the queue when it has been successfully completed. You can check on the outcome of the session by displaying the session log file.&lt;br /&gt;If the KEEP option was set when the session was generated, then the system leaves a session in the queue, even if it was run successfully. The status is changed to Processed.&lt;br /&gt;&lt;br /&gt;You cannot run the session a second time.  You must manually delete it when you no longer need it.&lt;br /&gt;&lt;br /&gt;If a transaction in the session contained an error, the incorrect transaction is aborted. All other transactions are completed. The session remains in the queue and is held in the Errors section of the list. You can correct the session in one of the interactive modes and run it to completion.&lt;br /&gt;&lt;br /&gt;A transaction contains an error if it issues a message of type E (error) or type A (abnormal termination). Other messages are ignored and do not affect the execution of a session..&lt;br /&gt;A session also is held in the queue in the Errors list if the session was ended with the /bend OK code. Please see Correcting a Session(f).&lt;br /&gt;&lt;br /&gt;For more information on correcting sessions with the display-all or error-display mode, please see Correcting a Session(f).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;f) Correcting a Session:&lt;br /&gt;&lt;br /&gt;When a session is run in background-processing mode, the system marks transactions that contain errors as incorrect. All other transactions in the session are completed. The session itself is kept in the session queue in the Errors section of the list.&lt;br /&gt;A transaction contains an error if it generates an error message of type E (error) or type A (abnormal termination). Messages of other types are ignored and do not affect the execution of a session.&lt;br /&gt;You can correct and re-execute the incorrect transactions in an "Errors" session.  There are two ways to do so:&lt;br /&gt;&lt;br /&gt;1. Re-run the session in display-all or error-display mode.  These modes offer the following advantages:&lt;br /&gt;&lt;br /&gt;The system skips transactions that were successfully completed. Only incorrect transactions or transactions that have not been executed are run.&lt;br /&gt;You can change inputs and add missing screens interactively as incorrect transactions run.&lt;br /&gt;&lt;br /&gt;The following topic provides more information on using display-all mode or error-display mode to correct a transaction.&lt;br /&gt;&lt;br /&gt;2. As an alternative, you can analyze the session to determine what the error was. With the analysis displays, you can check the screen that contained the error and the values that were entered in it. You can then correct the program that generated the session and regenerate the session.&lt;br /&gt;&lt;br /&gt;You must ensure that the new session does not include transactions that were successfully completed. Otherwise, the updates made by the transactions will be performed again.&lt;br /&gt;&lt;br /&gt;Using Display-All Mode&lt;br /&gt;&lt;br /&gt;When you use display-all mode to re-start a session that contains an incorrect transaction, the system skips to the first screen of the incorrect transaction. Completed transactions are not re-executed.&lt;br /&gt;&lt;br /&gt;options when you run a session interactively.&lt;br /&gt;&lt;br /&gt;To correct a transaction, you can:&lt;br /&gt;&lt;br /&gt;use the ENTER key to step through the screens recorded in the session&lt;br /&gt;&lt;br /&gt;As in normal operation, pressing the ENTER key starts a dialog step. As long as you simply press ENTER, the system processes the screens and data recorded in the session.&lt;br /&gt;&lt;br /&gt;change or add values in any screen&lt;br /&gt;&lt;br /&gt;When you press ENTER, the system processes the data as altered by you.&lt;br /&gt;&lt;br /&gt;branch off from the transaction flow recorded in the session&lt;br /&gt;&lt;br /&gt;You can use any function that you wish within the transaction that is currently running. You can, for example, branch off to enter data on a screen that was omitted from the session.&lt;br /&gt;To resume executing the session, return to the screen that was expected by the session.&lt;br /&gt;It holds the data for the screen recorded in the session until you have returned to that screen. It then resumes normal execution of the session.&lt;br /&gt;&lt;br /&gt;Interrupting a Session&lt;br /&gt;&lt;br /&gt;You can interrupt the interactive execution of a session by entering the /bend OK code on any screen. /bend terminates the transaction currently being executed in the session and marks the transaction with the status Incorrect. The session is kept in the queue and is displayed in the Errors in sessions section of the list.&lt;br /&gt;You can use /bend when testing sessions. For example, you may wish to run the first two transactions of a large session in display-all mode to make sure that the session has been generated correctly.&lt;br /&gt;&lt;br /&gt;If the transactions are correct, you can then terminate the run with /bend and then submit the session for background execution. The transactions that have already been run will not be run again.&lt;br /&gt;&lt;br /&gt;Deleting a Transaction&lt;br /&gt;&lt;br /&gt;You can delete a transaction from a session during interactive execution by entering the /bdel OK code. The transaction is removed from the session. The deleted transaction cannot be run even if you restart the session, and you cannot take back the deletion.&lt;br /&gt;&lt;br /&gt;The transaction is, however, available for analysis if the session was generated with the KEEP option set. The transaction is marked with the status Deleted in the analysis display. The deletion also is recorded in the log generated by the session.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;g) Deleting Sessions:&lt;br /&gt;&lt;br /&gt;You can delete any session from the session queue. Deleting a session discards the session. If the session has already been run, you also delete the session log.&lt;br /&gt;&lt;br /&gt;Normally, sessions are deleted from the session queue automatically when they are completed. However, if a session was generated with the KEEP option, it is kept in the session queue. You must explicitly delete the session when you no longer need it.&lt;br /&gt;&lt;br /&gt;A session is also kept in the queue if it contained an error or was broken off with the /bend OK code. Such a session is deleted when you finish processing it, unless it was generated with the KEEP option.&lt;br /&gt;&lt;br /&gt;To delete a session from the session queue, mark the sessions to be deleted and select Edit --&gt; Delete.&lt;br /&gt;&lt;br /&gt;h) Locking and Unlocking Sessions:&lt;br /&gt;&lt;br /&gt;You can lock sessions in the session queue by marking the sessions and selecting Edit ® Lock.&lt;br /&gt;Locking a session prevents a session from being started until after the date recorded in the lock. For example, a session locked until the eleventh of November can be started only after that date.&lt;br /&gt;You may wish to lock a session for such reasons as&lt;br /&gt;&lt;br /&gt;holding a session until a specified date&lt;br /&gt;preventing a session that contains errors from being re-started&lt;br /&gt;preventing a session that requires a special resource, such as printer forms or a specific tape, from being started unintentionally.&lt;br /&gt;&lt;br /&gt;You can unlock a session by changing the lock date to the present date or by entering a space as the lock date.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;i) Releasing and Restarting an Interrupted Session:&lt;br /&gt;&lt;br /&gt;If a system problem occurs while a session is being generated or is being run, the session is terminated abnormally. Typical causes of an abnormal termination might include shutdown of the R/3 System while a session is running or termination of a SAPGUI presentation process while a session is being run interactively.&lt;br /&gt;&lt;br /&gt;In the session queue, a session that was terminated while it was being generated remains in the Being generated section of the list. A session that was terminated while it was running remains in the Active list.&lt;br /&gt;&lt;br /&gt;You can recognize that a session has terminated abnormally because the status of the session does not change. If, for example, you find a session that was run the previous night still in the Active list, then it is likely that the session was interrupted.&lt;br /&gt;&lt;br /&gt;If a session was to run in the background, you can check the status of the session's job in the background processing system. If the session was aborted, then the background job log contains the reason for the abnormal termination.&lt;br /&gt;&lt;br /&gt;Before you can restart (or start) a session that terminated abnormally, you must release it. Releasing the aborted session sets its status to Being processed. Reset the status by marking the session or sessions and selecting Edit --&gt; Release.&lt;br /&gt;&lt;br /&gt;You can safely restart a session that was interrupted while it was being run. When you restart the session, all transactions that were successfully completed before the problem occurred will be skipped. The transaction that was executing when the problem occurred will be re-executed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;caution&lt;br /&gt;&lt;br /&gt;Release an active session only if you are sure that it has been interrupted and is no longer running.. Sessions also have the status Active while they are running.&lt;br /&gt;&lt;br /&gt;caution&lt;br /&gt;Restarting after abnormal termination during generation: You can start a session that was interrupted while it was being generated. The session is guaranteed to contain only complete transactions and to be runnable.&lt;br /&gt;&lt;br /&gt;However, there is no guarantee that the session contains all of the transactions that were to be included in it. You may therefore wish to delete and regenerate such a session.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;j) Displaying Queue Management Information:&lt;br /&gt;&lt;br /&gt;Should you ever need to review the internal queue-management information on a particular entry, you can display this information by marking an entry and selecting Analysis --&gt; Queue.&lt;br /&gt;Not all of the queue management fields displayed are used by the batch input system; the queue management functions are used by other queues in the system as well. The fields that are used by the batch input system are as follows:&lt;br /&gt;&lt;br /&gt;Client:  The client in which a session is to run.&lt;br /&gt;Groupid:  The session name.&lt;br /&gt;QID:  The internal ID of a session.  The ID is used for queue management with System              -&gt; Services --&gt; Queue.&lt;br /&gt;QSTATE:  A character indicating the status of the batch input session.&lt;br /&gt;QERASE: If marked, indicates that the KEEP option is set. If KEEP is set, the system does not delete the session after it is successfully run.&lt;br /&gt;USERID:  User to be used for authorization testing if a session is submitted for                          background execution.&lt;br /&gt;displaying Session Logs:&lt;br /&gt;&lt;br /&gt;Every batch input session generates a log when it runs.  To display a log, you can either:&lt;br /&gt;&lt;br /&gt;select Session --&gt; Logs from the batch input main menu; or&lt;br /&gt;put the cursor on a particular session in the session queue and select Goto --&gt; Log.&lt;br /&gt;&lt;br /&gt;A session log contains any error messages issued by transactions in the session. It also includes batch input error messages reporting any problems in running transactions, together with the transaction and screen at which the problem occurred. Finally, a log contains a set of summary statistics.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;l) Reorganizing the Log File:&lt;br /&gt;&lt;br /&gt;You should periodically use the ABAP/4 program RSBDCREO to reorganize the batch input log file. You can run RSBDCREO in the background or interactively.&lt;br /&gt;&lt;br /&gt;Running the program reduces the size of the log file, BI&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;, in the shared R/3 directory "global" in the host system to the minimum possible size. Deleting a session marks a session log for deletion, but the storage held for the log is returned to the host only by a reorganization.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;The program will delete a log only if the session to which the log belongs has been deleted.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;m) Analyzing Sessions:&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Use the analysis functions to check on the actions performed by a batch input session. The analysis functions allow you to display the transactions, screens, and data in a session. &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;You can use these functions before or after a session has been run.  &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;note&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Analysis of sessions that have been run is available only for sessions that contained an error or which were generated with the KEEP option. The KEEP option prevents the system from deleting a session that has been successfully run. &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;You can analyze a session by marking the session in the session queue and selecting Goto --&gt; Analysis --&gt; Session or by selecting Analysis from the session log screen.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Analysis Blocks&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Reading very long sessions from the database can cause time-outs to occur. For this reason, the system reads sessions for analysis in blocks. &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Blocks do not restrict your ability to display a long session. You can switch forward and backward from block to block with function keys. &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;A block always contains only complete transactions.  A block boundary cannot fall in the middle of a transaction.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Session Summary&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;The first analysis screen lists the transactions and screens recorded in the session.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Screens are identified by the name of the program and the number of the screen. Statuses are identical to those of the session queue, except that transactions that were deleted with the /bdel OK code have the status Deleted.&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;Session Data&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;You can display the data entered on each screen of a session by selecting Analysis ® Data from the first analysis screen.  &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;You can have the data presented to you in two formats:&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;• The first data display presents data in list format by field name.  &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;• Alternatively, you can switch to the screen called by the session with the session data shown on it.    &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;You can switch back and forth from one form of display to the other.  &lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;/instance&gt;&lt;/r&gt;&lt;br /&gt;&lt;r 3="" system="" name=""&gt;&lt;instance name=""&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/instance&gt;&lt;/r&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BDC SAP I</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bdc-sap-i.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:43:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-4887161862120546325</guid><description>(1) BATCH INPUT CONCEPTS:&lt;br /&gt;&lt;br /&gt;The SAP System offers two primary methods for transferring data into the System from other SAP Systems and non-SAP Systems. These two methods are collectively called "batch input" or "batch data communication."&lt;br /&gt;&lt;br /&gt;basic technique  for data transfer with batch input.&lt;br /&gt;&lt;br /&gt;Both batch input methods work by carrying out normal SAP transactions, just as a user would. However, batch-input can execute the transactions automatically and is therefore suitable for entering large amounts of data that are already available in electronic form.&lt;br /&gt;The batch input technique offers these advantages for transferring data:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No manual interaction is required during data transfer. If the data to be transferred is already available in electronic form (on a tape, for example), then you can enter the data automatically into the SAP System using batch input.&lt;br /&gt;&lt;br /&gt;Batch input ensures data integrity. Batch input enters data into the SAP System using the same transactions that interactive users do. Batch input data is therefore submitted to all of the checks and controls that apply to data entered by normal interactive means.&lt;br /&gt;&lt;br /&gt;The batch input methods.&lt;br /&gt;&lt;br /&gt;There are several ways to process batch input data in the SAP System.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Batch input processing methods.&lt;br /&gt;&lt;br /&gt;The first processing method could be called "classical batch input." In it, an ABAP/4 program reads the external data that is to be entered in the SAP System and stores the data in a "batch-input session." A session stores the actions that are required to enter your data using normal SAP transactions.&lt;br /&gt;&lt;br /&gt;When the program has finished generating the session, you can run the session to execute the SAP transactions in it. You can either explicitly start and monitor a session with the batch-input management function (System --&gt; Services --&gt; Batch input) or have the session run in the background processing system.&lt;br /&gt;This method uses the function modules BDC_OPEN, BDC_INSERT, and BDC_CLOSE to generate sessions.&lt;br /&gt;&lt;br /&gt;In the second method, your program uses the ABAP/4 CALL TRANSACTION USING statement to run an SAP transaction. Batch-input data does not have to be deposited in a session for later processing. Instead, the entire batch-input process takes place inline in your program.&lt;br /&gt;&lt;br /&gt;There is a third batch-input method using the ABAP/4 CALL DIALOG statement. However, SAP recommends against using this method unless necessary. The CALL DIALOG method is now outdated and is more complex and less comfortable to use than the other techniques.&lt;br /&gt;All three batch-input methods use a common data structure for holding the instructions and data for SAP transactions. This structure is defined as structure BDCDATA in the ABAP/4 Dictionary.&lt;br /&gt;&lt;br /&gt;For help in selecting the method to use, please see SELECTING A BATCH-INPUT METHOS (11).&lt;br /&gt;&lt;br /&gt;Typical uses of batch input.&lt;br /&gt;&lt;br /&gt;Uses of batch input include the following:&lt;br /&gt;&lt;br /&gt;transferring data from another system when you install your SAP System&lt;br /&gt;regularly transferring data that is captured by a non-SAP system in your company into the SAP System. Assume, for example, that data collection in some areas of your company is still performed by a non-SAP system. You can still consolidate all of your data in the SAP System by exporting the data from the other system and reading it into the SAP System with batch input.&lt;br /&gt;&lt;br /&gt;You can also use batch input to transfer data between two R/3 Systems. However, there are more direct methods for doing this, such as RFC (remote function calls).&lt;br /&gt;&lt;br /&gt;application support for batch-input.&lt;br /&gt;&lt;br /&gt;The SAP applications provide pre-programmed support for batch input transfers for many of SAP's business objects.&lt;br /&gt;To implement one of the supported data transfers, you must often write the program that exports the data from your non-SAP System. This program, known as a "data transfer" program must map the data from the external system into the data structure required by the SAP batch input program.&lt;br /&gt;Should you wish to write a transfer program that executes outside the SAP System, then the SAP applications provide definitions of the required data formats for the exports. From these definitions, you can generate code for the data structures to include in your export program. You can also write such programs in ABAP/4, which lets you take advantage of the comfort and conveniences of the SAP Development Workbench.&lt;br /&gt;Once you have exported the data, you can then use a standard, pre-programmed SAP report to import the data. This program uses one of the batch input methods to process the data and add it to the SAP System.&lt;br /&gt;&lt;br /&gt;You can find information on pre-defined batch-input programs in the SAP Customizing System. Choose Tools --&gt; Customizing. Then display either your Enterprise IMG (Implementation Guide) projects or the SAP standard IMG. In the project display, use the Expand function to display all nodes in the project. You can then search for relevant topics with the keywords batch input and transfer.&lt;br /&gt;&lt;br /&gt;(2) TRANSFERING DATA : BATCH INPUT PROCEDURE IN OVERVIEW.&lt;br /&gt;&lt;br /&gt;Transferring data with batch input requires the steps shown in the illustration and list below.&lt;br /&gt;Note that SAP standard batch-input programs take care of several of these steps for you. For more information, please see BATCH INPUT CONCEPTS (1).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The procedure:&lt;br /&gt;&lt;br /&gt;1. Analyze the data that is to be transferred to the SAP System.&lt;br /&gt;&lt;br /&gt;Goal:  Determine how your existing data should be mapped to the SAP data structure.&lt;br /&gt;Method: You'll need to determine the structure of the data that is to be transferred into the system. Using the SAP data structure that you generate in step 2, you'll need to determine how the data to be transferred must be mapped to the SAP structure. You'll also need to determine whether any data type or data length conversions are required.&lt;br /&gt;&lt;br /&gt;For more information, please see DATA CONVERSIONS(6).&lt;br /&gt;&lt;br /&gt;2. Generate SAP data structures for incorporation into your data export program.&lt;br /&gt;&lt;br /&gt;Method: Use the data structure generation function of the ABAP/4 dictionary to generate data structures for SAP tables in any of several programming languages.&lt;br /&gt;If you are using one of SAP's standard batch input programs, then use of this function is required. The standard batch input programs generally require that you use a special pre-defined data structure.&lt;br /&gt;&lt;br /&gt;For more information, please see GENERATING AN SAP DATA STRUCTURE(5).&lt;br /&gt;&lt;br /&gt;If you're writing your own batch input procedure, then you will need to determine the data structure on your own. You'll need to analyze the SAP transactions to find the names of the fields that the transaction requires. For more information, please see ANALYSING SAP TRANSACTIONS(4).&lt;br /&gt;&lt;br /&gt;3. Code your data transfer program. You can write the program in ABAP/4 or as an external program. You'll find more information in WRITING A DATA TRANSFER PROGRAM(3).&lt;br /&gt;&lt;br /&gt;4. Export the data that is to be transferred to a sequential file.&lt;br /&gt;&lt;br /&gt;Requirements:&lt;br /&gt;&lt;br /&gt;The file must use the logical format required by the batch-input program that will import the file (step 6).&lt;br /&gt;&lt;br /&gt;Reading and interpreting the file is much easier if you write it in ASCII or EBCDIC                      &lt;br /&gt;(character) format rather than, for example, writing numeric data in hexadecimal format.&lt;br /&gt;&lt;br /&gt;Character format is required by the pre-defined SAP batch input programs.&lt;br /&gt;&lt;br /&gt;5. If necessary, code the ABAP/4 batch input program that will read in the data to be             transferred from your file.&lt;br /&gt;&lt;br /&gt;SAP supplies ready-to-run batch-input programs for most of the SAP applications.&lt;br /&gt;&lt;br /&gt;For more information on writing your own program, see WRITING A BATCH INPUT PROGRAM : PROCEDURE IN OVERVIEW(10).&lt;br /&gt;&lt;br /&gt;6. Process the data and add it to the SAP System.  You can do this either by:&lt;br /&gt;&lt;br /&gt;GENERATING A BATCH-INPUT SESSION(A) ; or&lt;br /&gt;by processing data directly in your batch-input program with the ABAP/4 statement                                     &lt;br /&gt;CALL TRANSACTION USING (19).&lt;br /&gt;&lt;br /&gt;7. Check that all data has been successfully processed.&lt;br /&gt;&lt;br /&gt;Method: Analyze the batch input processing log. If you are using CALL TRANSACTION USING, then you will need to analyze the processing messages collected by your program.&lt;br /&gt;You'll find more information on running and analyzing sessions and logs in MANAGING BATCH-INPUT SESSIONS(B).&lt;br /&gt;&lt;br /&gt;8. Correct and re-process erroneous data.&lt;br /&gt;&lt;br /&gt;Method: You can use the batch-input management function to process erroneous transactions interactively. You can correct data during this interactive processing.&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;       &lt;br /&gt;                      A.GENERATING A BATCH-INPUT SESSION.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of the two recommended ways to process batch input data is to store the data in a batch input session. This session can then be run in the SAP System to enter the batch input data into the system.&lt;br /&gt;&lt;br /&gt;In general, preparing a session is the best and most comfortable way to process batch input data. However, you may wish to use the alternate method, CALL TRANSACTION USING, if your batch input sessions cannot be run quickly enough. For more information on choosing the best batch input method, see SELECTING A BATCH-INPUT METHOD(11).&lt;br /&gt;&lt;br /&gt;Creating, Filling, and Closing a Batch Input Session&lt;br /&gt;&lt;br /&gt;To create a session, program the following procedure using the following BDC_ function modules:&lt;br /&gt;&lt;br /&gt;1. Open the batch input session using function module BDC_OPEN_GROUP (15) .&lt;br /&gt;2. For each transaction in the session:&lt;br /&gt;&lt;br /&gt;a. Fill the BDCDATA structure with values for all screens and fields that must be&lt;br /&gt;processed in the transaction. For more information, please see USING THE&lt;br /&gt;    BATCH-INPUT DATA STRUCTURE (12).&lt;br /&gt;       &lt;br /&gt;         b.   Transfer the transaction to the session with BDC_INSERT (16) .&lt;br /&gt;&lt;br /&gt;3. Close the batch input session with BDC_CLOSE_GROUP (17).&lt;br /&gt;&lt;br /&gt;The following topics describe these function modules. See SAMPLE BATCH INPUT PROGRAM(22) for an example of how the function modules are used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BADI SAP III</title><link>http://sapabapbasis4u.blogspot.com/2009/03/badi-sap-iii.html</link><category>BADI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:42:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-4070675177198538146</guid><description>A business add-in has two important attributes that you must define:&lt;br /&gt;Reusable&lt;br /&gt;Filter-dependent&lt;br /&gt;If you want the business add-in to support multiple parallel implementations, select Reusable. The sequence in which the implementations will be processed is not defined. Even if the business add-in does not support multiple use, you can still have more than one implementation for it. However, only one implementation can be active at a time.&lt;br /&gt;&lt;br /&gt;If you make a business add-in filter-dependent, you can make calls to it depending on certain conditions. You must specify the filter type in the form of a data element. The value table of the domain used by the data element contains the valid values for the implementation.&lt;br /&gt;&lt;br /&gt;When the enhancement method is called, a filter value must be passed to the interface.&lt;br /&gt;&lt;br /&gt;You can include function codes in a Business Add-In definition (similarly to menu exits in customer exits). To do this, enter the program name and function code, and a short description in the relevant fields.&lt;br /&gt;&lt;br /&gt;Restrictions:&lt;br /&gt;&lt;br /&gt;It is not currently possible to create BAdIs that consits only of menu enhancements (function codes).&lt;br /&gt;&lt;br /&gt;If you use menu enhancements, you cannot reuse a BAdI or make it filter-dependent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The system proposes a name for the interface and the generated class. You can, in principle, change the name of the interface to anything you like. However, your BAdI will be easier to understand if you retain the proposed name.&lt;br /&gt;&lt;br /&gt;The name of the generated class is composed as follows:&lt;br /&gt;Namespace prefix&lt;br /&gt;CL_ (to signify a class in general)&lt;br /&gt;EX_ (stands for "exit")&lt;br /&gt;Name of Business Add-In&lt;br /&gt;&lt;br /&gt;If you double-click on the interface name, the system switches to the Class Builder, where you can define the interface methods.&lt;br /&gt;A BAdI interface can have several interface methods.&lt;br /&gt;&lt;br /&gt;You can use all of the normal functions of the Class Builder.  For example, you can:&lt;br /&gt;Define interface methods&lt;br /&gt;Define interface parameters for the methods&lt;br /&gt;Declare the attributes of the interface&lt;br /&gt;If the business add-in is filter-dependent, you must define an import parameter flt_val for each method. Otherwise, you define the interface parameters you need for the enhancement.&lt;br /&gt;&lt;br /&gt;Once you have finished working on your interface, you must activate it. This generates the adapter class for the Business Add-In.&lt;br /&gt;&lt;br /&gt;If you change the interface, the adapter class is automatically regenerated.&lt;br /&gt;You can also generate the adapter class explicitly at any time by choosing Utilities -&gt; Regenerate from the initial screen of the Business Add-In maintenance transaction.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To call a business add-in method in an application program, you must include three statements in the program:&lt;br /&gt;Declare a reference variable (1) with reference to the business add-in interface (in our example, "exit_ref").&lt;br /&gt;Call the static method GET_INSTANCE of the service class CL_EXITHANDLER (2). This returns an instance of the required object. This involves an implicit narrow cast, so that only the interface methods of the object with the reference variable "exit_ref" can be addressed.&lt;br /&gt;You can now call all of the methods of the business add-in. Make sure you specify the method interfaces correctly.&lt;br /&gt;&lt;br /&gt;If your Business Add-In is filter-specific, you must pass an appropriate value to the parameter flt_val.&lt;br /&gt;&lt;br /&gt;Business add-ins are a natural extension of the conventional enhancement technique. They have taken over the administration layer from customer exits, along with the availability of the various enhancement components.&lt;br /&gt;They adopted the idea of reusability from Business Transaction Events, and have been implemented using a consistent object-oriented approach.&lt;br /&gt;The object-oriented implementation provides previously unavailable opportunities. For example, it would be possible to enhance the object "Document". It would be possible to provide a new instance of the enhancement for each individual document.&lt;br /&gt;&lt;br /&gt;The components in parentheses in the graphic have not yet been implemented:&lt;br /&gt;Screen enhancements&lt;br /&gt;Table enhancements&lt;br /&gt;&lt;br /&gt;These enhancement components are planned for later releases. There will then also be a migration tool for converting previous enhancements into the new form.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BADI SAP II</title><link>http://sapabapbasis4u.blogspot.com/2009/03/badi-sap-ii.html</link><category>BADI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:42:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-1340618281562645886</guid><description>A business add-in contains the components of an enhancement. Currently, each business add-in can contain the following components:&lt;br /&gt;&lt;br /&gt;Program enhancements&lt;br /&gt;Menu enhancements&lt;br /&gt;In future releases, the other components included in customer exits will also be available as add-in components.&lt;br /&gt;&lt;br /&gt;Several components are created when you define a business add-in:&lt;br /&gt;Interface&lt;br /&gt;Generated class (add-in adapter)&lt;br /&gt;The generated class performs the following tasks:&lt;br /&gt;Filtering: If you implement a filter-dependent business add-in, the adapter class ensures that only the relevant implementations are called&lt;br /&gt;&lt;br /&gt;Control:  The adapter class calls the active implementations. &lt;br /&gt;&lt;br /&gt;This graphic shows the process flow of a program that contains a business add-in call. It enables us to see the possibilities and limitations inherent in business add-ins.&lt;br /&gt;&lt;br /&gt;Not displayed:  You must declare a reference variable in the declaration part. &lt;br /&gt;In the first step, an existing service class, CL_EXITHANDLER, creates an object reference. We will discuss the precise syntax later on. This completes the preparations for using the program enhancement.&lt;br /&gt;&lt;br /&gt;When you define a business add-in, the system generates an adapter class, which implements the interface. In call (2), the interface method of the adapter class is called. The adapter class searches for all of the implementations of the Business Add-In and calls the implemented methods.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First, you must define a reference variable with reference to the business add-in interface. The name of the reference variable does not necessarily have to contain the name of the business add-in.&lt;br /&gt;&lt;br /&gt;In the first step (1), an object reference is created. This creates an instance of the generated adapter class, restricted to the methods of the interfaces ("narrowing cast").&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can use this object reference to call the required methods (2).&lt;br /&gt;&lt;br /&gt;There are various ways of searching for business add-ins:&lt;br /&gt;You can search in a relevant application program for the string "CL_EXITHANDLER". If a business add-in is called from the program, the "GET_INSTANCE" method of this class must be called.&lt;br /&gt;&lt;br /&gt;You can then reach the definition of the business add-in using forward navigation. The definition also contains documentation and a guide for implementing the Business Add-In.&lt;br /&gt;&lt;br /&gt;You can also use search tools: Since SAP provided fewer than 50 Business Add-Ins in Release 4.6A, even a list of them all is still manageable.&lt;br /&gt;&lt;br /&gt;However, you can also use the application hierarchy to restrict the components in which you want to search. Start the Repository Information System, then choose Environment -&gt; EXIT techniques -&gt; Business Add-Ins" to start the relevant search program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To implement business add-ins, use transaction SE19 (Tools -&gt; ABAP Workbench -&gt; Utilities -&gt; Business Add-Ins -&gt;Implementation).&lt;br /&gt;&lt;br /&gt;Enter a name for the implementation and choose Create. A dialog box appears. Enter the name of the business add-in. The maintenance screen for the business add-in then appears.&lt;br /&gt;&lt;br /&gt;Alternatively, you can use the Business Add-In definition transaction to reach its implementations. The menu contains an entry "Implementation", which you can use to get an overview of the existing implementations. You can also create new implementations from here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can assign any name to the implementing class. However, it is a good idea to observe the proposed naming convention. The suggested name is constructed as follows:&lt;br /&gt;Namespace prefix, Y, or Z&lt;br /&gt;CL_ (for class)&lt;br /&gt;IM_ (for implementation)&lt;br /&gt;Name of the implementation&lt;br /&gt;To implement the method, double-click its name. The system starts the Class Builder editor. &lt;br /&gt;&lt;br /&gt;When you have finished, you must activate your objects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the implementing class, you can create your own methods that you then call from the interface method. &lt;br /&gt;&lt;br /&gt;You cannot create them using forward navigation. Instead, you must define a regular method in the Class Builder (along with its interface). Specify a visibility for the method, and implement it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use the "Activate" icon to activate the implementation of a Business Add-In. From now on, the methods of the implementation will be executed when the relevant calling program is executed.&lt;br /&gt;&lt;br /&gt;If you deactivate the implementation, the methods will no longer be called. However, the corresponding calls in the application program are still processed. The difference is that the instance of the adapter class will no longer find any active implementations. Unlike the "CALL CUSTOMER-FUNCTION" call, the "CALL METHOD CL_EXITHANDLER=&gt;GET_INSTANCE" call is still executed even if there are no implementations. The same applies to the statement calling the method of the adapter class.&lt;br /&gt;&lt;br /&gt;You can only activate or deactivate an implementation in its original system. Changing it anywhere else constitutes a modification. The activation or deactivation must be transported into subsequent systems.&lt;br /&gt;&lt;br /&gt;If a business add-in can only have one implementation, there can still be more than one implementation in the same system. However, only one can be active at any time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As with customer exits, you can use menu enhancements with Business Add-Ins.  However, the following conditions must be met:&lt;br /&gt;&lt;br /&gt;The developer of the program you want to enhance must have planned for the enhancement.&lt;br /&gt;The menu enhancement must be implemented in a BAdI implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Function codes of menu enhancements begin with a plus sign '+'.&lt;br /&gt;The menu entry will only appear if there is an active business add-in implementation containing the corresponding enhancement.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can only create function codes for business add-ins that can only be used once. Moreover, the business add-in cannot be filter-dependent.&lt;br /&gt;These restrictions are necessary to ensure that there are no conflicts between two or more implementations.&lt;br /&gt;&lt;br /&gt; If the user chooses the menu entry in the program to which the function code "+" is assigned, the system processes the relevant method call.&lt;br /&gt;&lt;br /&gt;The method call and the menu enhancement belong inseparably to one another. Having the former without the latter would make no sense. For this reason, it is important that the two enhancement components are combined in a single enhancement - the business add-in.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To create a BAdI, use the BAdI Builder (Tools -&gt; ABAP Workbench -&gt; Utilities -&gt; Business Add-Ins -&gt; Definition).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BADI SAP I</title><link>http://sapabapbasis4u.blogspot.com/2009/03/badi-sap-i.html</link><category>BADI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:41:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-56676761228460780</guid><description>A class is an abstract description of an object. Each object only exists while the program is running. In this unit, when we talk about objects, we may actually mean the abstract description (the class), depending on the context.&lt;br /&gt;&lt;br /&gt;An object is described by its class and consists of two layers - an inner and an outer layer.&lt;br /&gt;­ Public components: The public components are those components of the class (for example, attributes and methods) that are visible externally. All users of the class can use the public components directly. The public components of an object form its interface.&lt;br /&gt;&lt;br /&gt;­ Private components: These components are only visible within an object. Like the public components, the private components can be attributes and methods.&lt;br /&gt;&lt;br /&gt;The aim of object orientation is to ensure that a class can guarantee its own consistency. Consequently, the data of an object is normally "internal", that is, represented using private attributes. The internal (private) attributes of a class can only be changed by methods of the class. As a rule, the public components of a class are methods. The methods work with the data in the class and ensure that it is always consistent.&lt;br /&gt;&lt;br /&gt;Objects also have an identity to differentiate it from other objects with the same attributes and methods.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Until Release 4.0, the nearest thing to objects were function groups and function modules.&lt;br /&gt;&lt;br /&gt;When you call a function module, an instance of its function group - with all of its data definitions - is loaded into the memory area of the internal session. An instance is a real software object. An ABAP program can therefore load instances of different function groups by calling function modules, but only one instance of each function group can exist at a time.&lt;br /&gt;&lt;br /&gt;The principle difference between real object orientation and function modules is that a program can work with instances of different function groups, but not with several instances of a single function group. For example, suppose a program wanted to manage several independent counters, or several orders at the same time. If we did this using a function group, we would have to program an instance management to differentiate between the instances (using numbers, for example).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In practice, it is very cumbersome to implement instance management within a function group. Consequently, the data is usually in the calling program, and the function modules work with this data. This causes various problems. For example, all of the users have to work with the same data structures as the function group. If you want to change the internal data structure of a function group, you will affect a lot of users, and the implications of the changes are often hard to predict.&lt;br /&gt;&lt;br /&gt;Another problem is that all users have copies of the data, and it is difficult to keep them consistent when changes are made.&lt;br /&gt;&lt;br /&gt;Working with global data in function groups is dangerous, because it is almost impossible in a complex transaction to control when each function group is loaded.&lt;br /&gt;&lt;br /&gt;These problems have been solved with the introduction of classes. Data and functions are defined in classes instead of function groups. An ABAP program can then work with any number of runtime instances that are based on the same template. Instead of loading a single runtime instance of a function group implicitly when you call a function module, ABAP programs can create runtime instances of classes explicitly. The individual runtime instances are uniquely identifiable objects, and are addressed using object references.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Interfaces are defined independently of classes.&lt;br /&gt;&lt;br /&gt;They can contain declarations for elements such as attributes and methods.&lt;br /&gt;&lt;br /&gt;Interfaces are implemented by classes&lt;br /&gt;&lt;br /&gt;The classes then have a uniform external point of contact. They must provide all of the functions of the interface by implementing its methods.&lt;br /&gt;&lt;br /&gt;In a program, you can create reference variables with reference to interfaces. However, you cannot instantiate an interface.&lt;br /&gt;&lt;br /&gt;Interface references can, however, point to objects of different classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Business add-ins, unlike customer exits, take into account the changes to the software delivery process. The top part of the graphic illustrates the typical delivery process: It no longer merely consists of software provider and end user. Instead, it can now contain a whole chain of intermediate software providers like SAP Industry Solutions (IS) and partners.&lt;br /&gt;&lt;br /&gt;Below this is a diagram explaining how business add-ins work. Enhancements are made possible by SAP application programs. This requires at least one interface and an adapter class that implements it. The interface is implemented by the user.&lt;br /&gt;&lt;br /&gt;The main advantage of this concept is the capacity for reuse. Once implemented, a business add-in can be reimplemented by other links in the software chain (as shown on the right in the graphic).&lt;br /&gt;&lt;br /&gt;Furthermore, an implementation can also offer business add-ins of its own.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BAPI SAP IV</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bapi-sap-iv.html</link><category>BAPI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:41:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-617993813071447399</guid><description>Programming Methods for Sub-Objects&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;If a business object type consists of sub-objects, you can implement the following standardized BAPIs to add or remove sub-objects:&lt;br /&gt;&lt;br /&gt;Add&lt;name of="" object=""&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;This method adds a sub-object to an object type.&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt; Remove&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;This method removes a sub-object from an object.&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;For example, to add or remove the sub-object purchase order item to the business object type purchase order, the BAPIs AddItem() and RemoveItem() could be implemented for the object type, purchase order.&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The BAPIs Add&lt;name of="" object=""&gt; and Remove&lt;name of="" objects=""&gt; are instance methods.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;Features&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;Import Parameters&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;Both BAPIs' import parameters must contain in the function module the data that uniquely identifies the sub-object as well as the key fields of the business object.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;If required, you can create also create these parameters:&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt; A test run parameter for checking the entry for an object instance before actually creating the instance in the database.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt; A change parameter to identify parameter fields containing modified values and parameter fields that have not been modified.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;For more information about these parameters see Standardized Parameters.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;Export Parameters&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;You should only create the export parameter RETURN in the BAPI Remove&lt;name of="" object=""&gt; to return messages from the method call to the calling program. For more information about this parameter see Return Parameters (Error Handling).&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;To make the object key available to the calling program, the key fields of the object type must also be returned in the export parameters of the BAPI Add&lt;name of="" object=""&gt; as well as in the export parameter Return.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Extension parameters&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Locking&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;We recommend that you implement methods of sub-objects without the locking function and create your own BAPIs instead that lock the relevant data.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;If you are implementing BAPIs that create or change data you should consider using buffering. For further information see Buffering for Write BAPIs.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;BAPIs for Mass Processing&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The BAPIs listed in the above section, "BAPIs for Creating or Changing Data", can also be used for mass processing. Here, when a BAPI is called, several business object instances are processed at the same time.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;With BAPIs for mass processing, the suffix "Multiple" is added to the method name, for example, ChangeMultiple(), CreateMultiple(), DeleteMultiple(). The BAPIs here are always class methods.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;We strongly recommend that you create instance-dependent BAPIs with buffering instead of Multiple() BAPIs. For further information see Buffering with Write BAPIs.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;BAPIs for Replicating Business Object Instances&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The following BAPIs are used for replicating business object instances:&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Replicate() and SaveReplica()&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The BAPIs Replicate() and SaveReplica() are implemented as methods of replicable business object types(). They enable specific instances of an object type to be copied to one or more different systems. These BAPIs are used mainly to transfer data between distributed systems within the context of Application Link Enabling (ALE). These BAPIs are class methods.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Buffering with Write BAPIs&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Use&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;To save external systems each having to define their own data, predefined buffering mechanisms should be implemented in all write BAPIs (i.e. BAPIs that create and change data).&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;For SAP internal use this is particularly relevant for BAPIs developed as of Release 4.6A. If you want to implement a buffer for BAPIs in an earlier release, you should first contact a colleague in the central BAPI development group.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;For BAPIs standard R/3 System mechanisms can be used to buffer application data. Data to be created or changed by a BAPI is not created in the update buffer, it is first collected in the global buffer of the BAPI function module group. Then the whole buffer is updated at a specified time.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;This has the following advantages:&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt; Improvement in performance of the whole system.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The updating of individual operations is delayed and they can all be updated together. Techniques such as "array insert" improve system performance. If buffering is not used, each change must be updated separately.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt; Several changes to an application instance&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;With the first change the data is read from the database into the buffer and the change is made in the buffer. With the next change, the system recognizes that the data already exists in the buffer and also makes the change in the buffer. If buffering were not used, the first change would have to be updated before a second change could be made.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt; Using in Application Link Enabling&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;BAPIs with buffering are especially suited in situations where mass data is exchanged between systems via Application Link Enabling (ALE).&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The buffering mechanism enables application instances to be processed separately in the ALE layer, while still enabling the instances to be updated together. Unlike multiple BAPIs, such as, SaveReplicaMultiple(), this procedure allows error handling of individual instances.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;BAPIs with buffering mean that there is no need to use or implement multiple BAPIs.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Integration&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The Transaction Model for BAPIs Without Commit in use since Release 4.0 can be enhanced on the basis of these advantages:&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt; Within one Logical Unit of Work (LUW) several changes or detailed changes can be carried out for one instance.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt; All changes (to one or more instances) are updated together by the BAPI BapiService.TransactionCommit().&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Prerequisites&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The buffering mechanism for BAPIs must be implicit, that is, the caller must not have to control the buffering. A calling program must be able to use, for example, a Create()or Change() BAPI with buffering as well as it can use a BAPI without buffering. The buffer is updated implicitly in R/3.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;If buffering has been implemented for a business object type, all write BAPIs of this business object type must also be implemented with buffering.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;If write BAPIs with buffering have been implemented for a business object type, this affects the read BAPIs of this object type. Refer to the information in the Activities section below.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Features&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;For BAPIs with buffering, in addition to the standard guidelines, the following implementation steps and characteristics described below are required.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;Function Modules for Updating the Contents of the Buffer&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;As BAPIs with buffering can only create or change instances in the buffer, you have to provide one or more function modules to carry out the final update of the buffer contents. These update modules transfer the entire contents of the buffer to the update program.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;These function modules should not be implemented as BAPIs, as these are only used in the system in which the buffer is also used.&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;The naming convention for these function modules is:&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;_SAVEBUFFER.&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;Exceptions must not be defined for the update modules, as these are not run until the end of the program, when error handling is no longer possible.&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;Function Modules for Deleting the Contents of the Buffer&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;To ensure that the buffer is empty at the start of a transaction, you must provide a function module that deletes the contents of the buffer. This delete function module deletes the entire contents of the buffer and removes any locks on the instances. Neither should you implement this function module as a BAPI, because it is only used in the system in which the buffer is also used.&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;The naming convention for this function module is:&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;_CLEARBUFFER.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;No exceptions can be defined for delete modules because these are not run until the end of the transaction, when error handling is no longer possible (see Special Characteristics below).&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Special Characteristics&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;BAPIs with buffering need to have special characteristics. For example, these BAPIs must be able to deal with errors because a caller cannot reprocess data in the buffer. As data is buffered implicitly, no administration BAPIs are provided for callers.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Consistency of the Buffer Contents&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;A BAPI with buffering must carry out all the processing steps, except for updating. The consistency of all instances created or changed in the buffer must be guaranteed by the application.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;This means that:&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt; Only operations that can be updated with consistency guaranteed can be carried out in the buffer. The update module itself cannot perform consistency checks.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt; All other steps required before updating, such as assigning numbers or creating application blocks, must be carried out before calling the update module.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt; For operations that cannot be updated consistently, no action can take place. In these cases the error situation must be reported in the BAPI return parameter.&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Calling Update Modules&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;After the buffer operations have been successfully carried out, using the command&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;PERFORM &lt;routine&gt; ON COMMIT&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;call a form routine &lt;routine&gt; which then calls the update module(s).&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;The update modules must be called using the command&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;CALL &lt;business object="" name=""&gt;_SAVEBUFFER IN UPDATE TASK&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;to flag the execution in the update program.&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;By adding 'ON COMMIT' to the command PERFORM &lt;routine&gt; ON COMMIT, updating is not carried out immediately,it is carried out in the next COMMIT WORK. This way any number of BAPI calls can be collected together. The final COMMIT WORK command that is executed via the BAPI BapiService.TransactionCommit(), executes the form routine and also each update module once only. For this reason error handling cannot be performed in this form routine or in the function module.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Subscribing the Delete Module&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;At the start of each LUW the buffer must be empty. Any instances that may exist in the buffer, which were updated in an earlier LUW, are no longer blocked and may be older than the versions in the database. If this instance is updated again, inconsistencies would result.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;At the end of each LUW, the buffer contents must be deleted by calling the delete module. This can only be done by the BAPIs BapiService.TransactionCommit() and BapiService.TransactionRollback(). To supply these BAPIs with the necessary information, BAPIs with buffering must subscribe their delete module for the BAPI BapiService.TransactionCommit() bow. BapiService.TransactionRollback().&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;The delete module is subscribed by calling the central function module BUFFER_SUBSCRIBE_FOR_REFRESH, whereby the parameter NAME_OF_DELETEFUNC must contain the name of the delete module.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;No COMMIT WORK or ROLLBACK WORK Command&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;BAPIs with buffering must not execute COMMIT WORK or ROLLBACK WORK commands.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Documentation&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Each BAPI with buffering must be explicitly documented as such.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Activities&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Keep in mind the following important information about how write BAPIs with buffering interact with read BAPIs of the same business object.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Write BAPIs with Buffering and Read BAPIs for the Same Business Object&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;No Buffering for Read BAPIs&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;If write BAPIs with buffering are implemented for the same business object type, read BAPIs are not allowed to use the buffer for the same business object type, so that data read from the database can be stored, thereby avoiding further database accesses.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;As the imported data is not locked, the corresponding data in the buffer would become outdated over time. Subsequent read operations would first access the buffer and read the potentially out-of-date data, as data in the database can only be read, if this data is not in the buffer.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Buffer Instances Are "Real" Instances&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;All instances created or changed by write BAPIs in the buffer are consistent. They can be used by other change BAPIs for further processing within the same LUW.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;To guarantee the consistent behavior, all read BAPIs must handle existing instances that are in the buffer, and not yet in the database, as valid instances. Read BAPIs must be implemented in such a way that they first try to read an instance in the buffer and only start searching the database, if the instance is not found in the buffer.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;A buffer instance is therefore "real" instance. For example, a BAPI ExistenceCheck() must search for the existence of an instance in the buffer also.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Documenting Read BAPIs&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Each read BAPI that handles the buffering of corresponding write methods must be documented.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Prerequisites&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;The buffering mechanism for BAPIs must be implicit, that is, the caller must not have to control the buffering. A calling program must be able to use, for example, a Create()or Change() BAPI with buffering as well as it can use a BAPI without buffering. The buffer is updated implicitly in R/3.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;If buffering has been implemented for a business object type, all write BAPIs of this business object type must also be implemented with buffering.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;If write BAPIs with buffering have been implemented for a business object type, this affects the read BAPIs of this object type. Refer to the information in the Activities section below.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Features&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;For BAPIs with buffering, in addition to the standard guidelines, the following implementation steps and characteristics described below are required.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Function Modules for Updating the Contents of the Buffer&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;As BAPIs with buffering can only create or change instances in the buffer, you have to provide one or more function modules to carry out the final update of the buffer contents. These update modules transfer the entire contents of the buffer to the update program.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;These function modules should not be implemented as BAPIs, as these are only used in the system in which the buffer is also used.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;The naming convention for these function modules is:&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;_SAVEBUFFER.&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;Exceptions must not be defined for the update modules, as these are not run until the end of the program, when error handling is no longer possible (see Special Characteristics below).&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;Function Modules for Deleting the Contents of the Buffer&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;To ensure that the buffer is empty at the start of a transaction, you must provide a function module that deletes the contents of the buffer. This delete function module deletes the entire contents of the buffer and removes any locks on the instances. Neither should you implement this function module as a BAPI, because it is only used in the system in which the buffer is also used.&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;The naming convention for this function module is:&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;_CLEARBUFFER.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;No exceptions can be defined for delete modules because these are not run until the end of the transaction, when error handling is no longer possible (see Special Characteristics below).&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Special Characteristics&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;BAPIs with buffering need to have special characteristics. For example, these BAPIs must be able to deal with errors because a caller cannot reprocess data in the buffer. As data is buffered implicitly, no administration BAPIs are provided for callers.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Consistency of the Buffer Contents&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;A BAPI with buffering must carry out all the processing steps, except for updating. The consistency of all instances created or changed in the buffer must be guaranteed by the application.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;This means that:&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;• Only operations that can be updated with consistency guaranteed can be carried out in the buffer. The update module itself cannot perform consistency checks.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;• All other steps required before updating, such as assigning numbers or creating application blocks, must be carried out before calling the update module.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;• For operations that cannot be updated consistently, no action can take place. In these cases the error situation must be reported in the BAPI return parameter.&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;Calling Update Modules&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;After the buffer operations have been successfully carried out, using the command&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;PERFORM &lt;routine&gt; ON COMMIT&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;call a form routine &lt;routine&gt; which then calls the update module(s).&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;The update modules must be called using the command&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;CALL &lt;business object="" name=""&gt;_SAVEBUFFER IN UPDATE TASK&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;to flag the execution in the update program.&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;By adding 'ON COMMIT' to the command PERFORM &lt;routine&gt; ON COMMIT, updating is not carried out immediately,it is carried out in the next COMMIT WORK. This way any number of BAPI calls can be collected together. The final COMMIT WORK command that is executed via the BAPI BapiService.TransactionCommit(), executes the form routine and also each update module once only. For this reason error handling cannot be performed in this form routine or in the function module.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Subscribing the Delete Module&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;At the start of each LUW the buffer must be empty. Any instances that may exist in the buffer, which were updated in an earlier LUW, are no longer blocked and may be older than the versions in the database. If this instance is updated again, inconsistencies would result.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;At the end of each LUW, the buffer contents must be deleted by calling the delete module. This can only be done by the BAPIs BapiService.TransactionCommit() and BapiService.TransactionRollback(). To supply these BAPIs with the necessary information, BAPIs with buffering must subscribe their delete module for the BAPI BapiService.TransactionCommit() bzw. BapiService.TransactionRollback().&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;The delete module is subscribed by calling the central function module BUFFER_SUBSCRIBE_FOR_REFRESH, whereby the parameter NAME_OF_DELETEFUNC must contain the name of the delete module.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;No COMMIT WORK or ROLLBACK WORK Command&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;BAPIs with buffering must not execute COMMIT WORK or ROLLBACK WORK commands.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Documentation&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Each BAPI with buffering must be explicitly documented as such.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Activities&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Keep in mind the following important information about how write BAPIs with buffering interact with read BAPIs of the same business object.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Write BAPIs with Buffering and Read BAPIs for the Same Business Object&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;No Buffering for Read BAPIs&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;If write BAPIs with buffering are implemented for the same business object type, read BAPIs are not allowed to use the buffer for the same business object type, so that data read from the database can be stored, thereby avoiding further database accesses.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;As the imported data is not locked, the corresponding data in the buffer would become outdated over time. Subsequent read operations would first access the buffer and read the potentially out-of-date data, as data in the database can only be read, if this data is not in the buffer.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Buffer Instances Are "Real" Instances&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;All instances created or changed by write BAPIs in the buffer are consistent. They can be used by other change BAPIs for further processing within the same LUW.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;To guarantee the consistent behavior, all read BAPIs must handle existing instances that are in the buffer, and not yet in the database, as valid instances. Read BAPIs must be implemented in such a way that they first try to read an instance in the buffer and only start searching the database, if the instance is not found in the buffer.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;A buffer instance is therefore "real" instance. For example, a BAPI ExistenceCheck() must search for the existence of an instance in the buffer also.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Documenting Read BAPIs&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;Each read BAPI that handles the buffering of corresponding write methods must be documented.&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;name of="" objects=""&gt;&lt;name of="" object=""&gt;&lt;name of="" object=""&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;routine&gt;&lt;business object="" name=""&gt;&lt;routine&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/routine&gt;&lt;/routine&gt;&lt;/business&gt;&lt;/business&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;&lt;/name&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BAPI SAP III</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bapi-sap-iii.html</link><category>BAPI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:40:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-5521997205167215180</guid><description>Defining a BAPI and Its Interface&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;After you have carried out the review of the BAPI concept and it has been accepted, you can start defining the BAPI itself.&lt;br /&gt;&lt;br /&gt;In this step, you will decide on the names, parameters, and characteristics of the BAPI and determine the structures in the ABAP Dictionary, which the BAPI will be based on. Only after you have planned and defined these required details can you start to implement the BAPI and create the required programming objects.&lt;br /&gt;&lt;br /&gt;The table below illustrates where the planned information is written and how it fits together.&lt;br /&gt;&lt;br /&gt;Information in the BOR, Function Builder and ABAP Dictionary&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standardized BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;Some BAPIs and methods provide basic functions and can be used for most SAP business object types. Such BAPIs are known as "standardized" BAPIs.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;With object methods and especially with BAPIs, you can differentiate between instance methods and class methods. Instance methods refer to precisely one instance (one specific occurrence) of an SAP Business Object type, for example, to one explicitly specified customer order. Whereas class methods are instance-independent.&lt;br /&gt;&lt;br /&gt;BAPIs for Reading Data&lt;br /&gt;&lt;br /&gt;The following BAPIs provide you with read-only access to data in the associated business object type:&lt;br /&gt;GetList()&lt;br /&gt;With the BAPI GetList() you can select a range of object key values, for example, company codes and material numbers. The BAPIs GetList() is a class method.&lt;br /&gt;&lt;br /&gt;Programming GetList() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;With the BAPI GetList() you can select a range of object key values, for example, company codes and material numbers. The key values returned by this BAPI can be passed on to another BAPI for further processing, for example, the BAPI GetDetail().&lt;br /&gt;The BAPIs GetList() is a class method (instance-independent).&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Provide all the relevant fields in the interface of the GetList() BAPI. How complex and extensive you structure the interface, depends on the requirements the BAPI is to fulfill.&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The interface of a GetList() BAPI must provide selection parameters, in which the required selection criteria can be passed on by the calling program. The structure of selection parameters is described in the section Selection Parameters.&lt;br /&gt;&lt;br /&gt;You must also create the parameter MaxRows that enables you to limit the number of entries selected. This parameter prevents too large a value set from being selected, if the selection parameter specification is not very precise. Use the data element BAPIMAXROW as the reference type for the MaxRows parameter.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;The key values selected by the BAPI GetList() are returned to the calling program in a table, together with other useful information, for example, short texts.&lt;br /&gt;To report messages from the method call back to the calling program, you should create the export parameter RETURN. For more information about this parameter see&lt;br /&gt;Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Extension parameters&lt;br /&gt;&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;&lt;br /&gt;GetDetail()&lt;br /&gt;The BAPI GetDetail() uses a key to retrieve details about an instance (one specific occurrence) of a business object type and returns this data to the calling program. Then this information is reported back to the calling program. The BAPI GetDetail() is an instance method.&lt;br /&gt;&lt;br /&gt;Programming GetDetail() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BAPI GetDetail() is used to read details of specific object instances.&lt;br /&gt;The BAPI GetDetail() is an instance method.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The import parameters of the GetDetail() BAPI must contain the key fields of the business object type.&lt;br /&gt;&lt;br /&gt;For the associated method definition in the BOR, the key fields must not also be specified as method parameters. For this reason, the BOR/BAPI Wizard does not include the function module parameters for the key fields in the method definition, when it creates a BAPI.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;The export parameters of a BAPI contain details of the instance. According to the amount of information, this should be structured in several parameters with meaningful names.&lt;br /&gt;&lt;br /&gt;To report messages from the method call back to the calling program, you should create the export parameter Return. For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Extension Parameters&lt;br /&gt;&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;&lt;br /&gt;GetStatus()&lt;br /&gt;&lt;br /&gt;The BAPI GetStatus() is used to query the status of an SAP business object instance, for example, the processing status of a sales order. This BAPI is used only for displaying the status of an object and does not retrieve full details like the BAPI GetDetail(). The BAPI GetStatus() is an instance method.&lt;br /&gt;&lt;br /&gt;Programming GetStatus() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;With the BAPI GetStatus() you can retrieve information about the status of a particular object instance.&lt;br /&gt;The BAPI GetStatus() is an instance method.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;The import parameters of the GetStatus() BAPI must contain the key fields of the business object type.&lt;br /&gt;&lt;br /&gt;For the associated method definition in the BOR, the key fields must not also be specified as parameters. For this reason, the BOR/BAPI Wizard does not include the function module parameters for the key fields in the method definition, when it creates a BAPI.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;The export parameters of the BAPI contain information about the status of an object instance.&lt;br /&gt;&lt;br /&gt;To report messages from the method call back to the calling program, you should create the export parameter RETURN. For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Extension Parameters&lt;br /&gt;&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;&lt;br /&gt;ExistenceCheck()&lt;br /&gt;&lt;br /&gt;The BAPI ExistenceCheck() checks whether an entry exists for a business object instance, for example, whether the customer master has been created. The ExistenceCheck() BAPI is an instance method.&lt;br /&gt;&lt;br /&gt;Programming ExistenceCheck() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BAPI ExistenceCheck() checks whether an entry exists in the database for an SAP business object type, for example, whether the customer master has been created.&lt;br /&gt;The ExistenceCheck() BAPI is an instance method.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;You can implement this method as a BAPI and/or as a method of SAP Business Workflow. If you implement this method as a BAPI, it only has to be implemented once, because an ExistenceCheck() BAPI can also be used by SAP Business Workflow.&lt;br /&gt;&lt;br /&gt;To get the highest possible performance from the BAPI ExistenceCheck(), you should reduce the number of columns to as few as possible before selecting the table rows.&lt;br /&gt;select single bukrs from bkpf into lv_bukrs&lt;br /&gt;where bukrs = bkpf-bukrs&lt;br /&gt;and belnr = bkpf-belnr&lt;br /&gt;and gjahr = bkpf-gjahr.&lt;br /&gt;instead of&lt;br /&gt;select single * from bkpf&lt;br /&gt;where bukrs = bkpf-bukrs&lt;br /&gt;and belnr = bkpf-belnr&lt;br /&gt;and gjahr = bkpf-gjahr.&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The BAPI's import parameters in the function module only contain the key fields of the business object type.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;To report messages from the method call back to the calling program, you should create only the export parameter Return . For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Activities&lt;br /&gt;&lt;br /&gt;When a business object type is created, as the default, it inherits a definition of the method ExistenceCheck() through the interface IFSAP. For this reason, you can create an ExistenceCheck() BAPI using the BOR/BAPI Wizard, as the method name ExistenceCheck() already exists for the business object type.&lt;br /&gt;&lt;br /&gt;We recommend therefore, that you redefine the existing method ExistenceCheck() manually in the BOR, via the menu path Edit  Redefine.&lt;br /&gt;&lt;br /&gt;• Enter the function module that implements the ExistenceCheck() BAPI.&lt;br /&gt;• Create the method parameter RETURN (the key fields of the business object type are not included in the method definition in the BOR).&lt;br /&gt;&lt;br /&gt;BAPIs for Creating or Changing Data&lt;br /&gt;&lt;br /&gt;The following BAPIs can create, change or delete instances of a business object type:&lt;br /&gt;Create() or CreateFromData()&lt;br /&gt;The BAPI Create() or CreateFromData() creates an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.&lt;br /&gt;&lt;br /&gt;Programming Create() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BAPI Create() creates one instance of an SAP business object type. Likewise, the BAPI CreateMultiple() creates several instances of a business object type simultaneously.&lt;br /&gt;&lt;br /&gt;If a workflow method called Create already exists for the business object type in question, you can use the name CreateFromData() for your BAPI. Create() is the preferred name for this BAPI.&lt;br /&gt;&lt;br /&gt;The BAPIs Create() and CreateMultiple() are class methods (instance-independent).&lt;br /&gt;For each Create() BAPI a method must be provided with which the created business object instance can be deleted or cancelled. To do this, depending on the business application practice, you should implement one of the BAPIs below:&lt;br /&gt;&lt;br /&gt;• Delete(), which deletes a business object instance from the database. For more information see Programming Delete() BAPIs.&lt;br /&gt;• Cancel() which cancels a business object instance. For more information see Programming Cancel() BAPIs.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The BAPI's import parameters in the function module contain the data required to uniquely identify an instance. For this you can either enter all object keys or else you must ensure that these can be derived.&lt;br /&gt;&lt;br /&gt;If required, you can also use a test run parameter to check the entry for an object instance before actually creating the instance in the database. For further information see Test Run Parameters.&lt;br /&gt;&lt;br /&gt;You can create a change parameter to identify the values to create the instance with and to tell differentiate these values from the initial values when the BAPI is called. We recommend that you identify the change-relevant fields by flagging them.&lt;br /&gt;For more information see Change Parameters.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;To make the object key available to the calling program, the entire key fields must be returned in the export parameters.&lt;br /&gt;To report messages from the method call back to the calling program, you should create the export parameter RETURN. For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Extension parameters&lt;br /&gt;&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality&lt;br /&gt;of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;Avoiding Incompatibilities with Customizing Settings&lt;br /&gt;It could be possible that certain values set by Customizing appear differently in the BAPI interface. These values cannot be overwritten by a Create() BAPI.&lt;br /&gt;To avoid any incompatibility with Customizing settings, you should implement a Create() BAPI in the following way:&lt;br /&gt;&lt;br /&gt;• The BAPI should transfer all the fields and check them against the Customizing settings. If the Customizing settings write-protect a field, the data in this field cannot be overwritten by data in the BAPI interface.&lt;br /&gt;• For every incidence of incompatibility an error message must be returned to the calling program. For example, "Customizing settings do not allow the field 'MyAsset-AssetName' to be modified ".&lt;br /&gt;• All the fields that are assigned default values by Customizing and are therefore write-protected, must be documented.&lt;br /&gt;&lt;br /&gt;External Key Assignment&lt;br /&gt;For Create() BAPIs with an external key assignment the caller transfers the key (ID) to the object instance to be created, for example, to a document number.&lt;br /&gt;Keep in mind that you have to convert the specified keys explicitly in upper case letters in the source code of this type of Create() BAPIs. Otherwise keys are created that cannot be used in dialog applications. This is because with dialog applications external keys are always converted implicitly in upper case letters.&lt;br /&gt;&lt;br /&gt;Locking&lt;br /&gt;&lt;br /&gt;We recommend that you implement Create() BAPIs without the locking function and create your own BAPIs instead that lock the relevant data.&lt;br /&gt;&lt;br /&gt;Change()&lt;br /&gt;The BAPI Change() changes an existing instance of a SAP business object type, for example, a purchase order. The Change() BAPI is an instance method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Programming Change() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BAPI Change() changes an existing instance of an SAP business object type, for example, a sales order.&lt;br /&gt;&lt;br /&gt;The BAPI Change() is an instance method, whereas the BAPI ChangeMultiple() is a class method (instance-independent).&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The import parameters of the Change() BAPI must contain the key fields of the business object type.&lt;br /&gt;&lt;br /&gt;If required, you can create also create these parameters:&lt;br /&gt;• A test run parameter for checking the entry for an object instance before actually creating/changing the instance in the database.&lt;br /&gt;• A change parameter to identify parameter fields containing modified values and parameter fields that have not been modified.&lt;br /&gt;For more information about these parameters see Standardized Parameters.&lt;br /&gt;Export Parameters&lt;br /&gt;To make the object key available to the calling program, the entire key fields must be returned in the export parameters.&lt;br /&gt;To report messages from the method call back to the calling program, you should create the export parameter RETURN. For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;Extension parameters&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;Avoiding Incompatibilities with Customizing Settings&lt;br /&gt;It could be possible that certain values set by Customizing appear differently in the BAPI interface. These values cannot be overwritten by a Change() BAPI.&lt;br /&gt;&lt;br /&gt;To avoid incompatibility with Customizing settings, you should implement a Change() BAPI in the following way:&lt;br /&gt;&lt;br /&gt;• The BAPI should transfer all the fields and check them against the Customizing settings. If the Customizing settings write-protect a field, the data in this field cannot be overwritten by data in the BAPI interface.&lt;br /&gt;• For every incidence of incompatibility an error message must be returned in the return parameter to the calling program. For example, "Customizing settings do not allow the field 'MyAsset-AssetName' to be modified ".&lt;br /&gt;• All the fields that are assigned default values by Customizing and are therefore write-protected, must be documented.&lt;br /&gt;&lt;br /&gt;Locking&lt;br /&gt;&lt;br /&gt;We recommend that you implement Change() BAPIs without the locking function and create your own BAPIs instead that lock the relevant data.&lt;br /&gt;&lt;br /&gt;Delete() and Undelete()&lt;br /&gt;The BAPI Delete() deletes an instance of an SAP business object type from the database, for example, a purchase order.&lt;br /&gt;The BAPI Undelete() removes a deletion flag.&lt;br /&gt;These BAPIs are instance methods.&lt;br /&gt;&lt;br /&gt;Programming Delete() BAPIs&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BAPI Delete() deletes an instance of an SAP business object type from the database. Likewise, the BAPI DeleteMultiple() deletes several instances of a business object type. Delete() BAPIs must always delete entire instances, for example, a whole material master.&lt;br /&gt;&lt;br /&gt;(Whereas the BAPI Cancel() cancels an instance of a business object, that is the instance to be cancelled remains in the database and an additional instance is created that is canceled. For more information see Programming Cancel() BAPIs).&lt;br /&gt;&lt;br /&gt;A delete() BAPI can delete immediately or at a later time by setting the deletion flag. The type of deletion you use in your BAPI is irrelevant to the caller, so you do not have to include these details in the BAPI interface.&lt;br /&gt;&lt;br /&gt;The BAPI Undelete() is used to reset a deletion flag that has been set for a specific object.&lt;br /&gt;&lt;br /&gt;The BAPIs Delete() and Undelete() are instance methods, whereas the BAPIs DeleteMutliple() and UndeleteMutliple() are class methods (instance-independent).&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;The interfaces of the Delete() and Undelete() BAPIs should be identical.&lt;br /&gt;Import Parameters&lt;br /&gt;The BAPI's import parameters have to identify the business object instances to be deleted.&lt;br /&gt;&lt;br /&gt;• If an instance is to be deleted, you have to create a parameter for each key field in the business object type.&lt;br /&gt;• If several instances are to be deleted, you must create a table for the key fields of the business object type. You can do this using a range table.&lt;br /&gt;If required, you can create also create these parameters:&lt;br /&gt;• A test run parameter for checking the entry for an object instance before actually deleting the instance from the database.&lt;br /&gt;• When the BAPI DeleteMultiple() is used, it must be possible to use the selection criteria to select the object instances to be deleted. To do this you can create selection parameters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Implement the interface of a Delete() BAPI so that it is not possible to delete all the instances simply by parameterizing the interface, for example by specifying default settings.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;To report messages from the method call back to the calling program, you should create only the export parameter Return . For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;&lt;br /&gt;Extension parameters&lt;br /&gt;&lt;br /&gt;You can create extension parameters to enable customers to enhance the functionality of BAPIs without making modifications. For information about extension parameters see Customer Enhancement Concept for BAPIs.&lt;br /&gt;&lt;br /&gt;Locking&lt;br /&gt;&lt;br /&gt;We recommend that you implement Delete() BAPIs without the locking function and create your own BAPIs instead that lock the relevant data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cancel()&lt;br /&gt;Unlike the BAPI Delete () the BAPI Cancel() cancels an instance of a business object, that is the instance to be cancelled remains in the database and an additional instance is created that is canceled).&lt;br /&gt;The Cancel() BAPI is an instance method.&lt;br /&gt;&lt;br /&gt;Programming Cancel() BAPIs&lt;br /&gt;Use&lt;br /&gt;The Cancel() BAPI cancels one instance of a business object.&lt;br /&gt;Unlike the BAPI Delete(), which deletes an object instance from the database, with the BAPI Cancel():&lt;br /&gt;&lt;br /&gt;• The canceled instance of the business object is not deleted&lt;br /&gt;• An additional instance is created with which the instance of the business object is deleted&lt;br /&gt;The Cancel() BAPI is used to cancel business processes such as goods movements or invoice receipts.&lt;br /&gt;The Cancel() BAPI is an instance method.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;&lt;br /&gt;Import Parameters&lt;br /&gt;&lt;br /&gt;The data of the instance to be created comes from the data of the business object instance to be cancelled.&lt;br /&gt;&lt;br /&gt;You can also create further parameters to specify information relevant for the actual cancellation process, for example, the name of the user performing the cancellation.&lt;br /&gt;&lt;br /&gt;If required, you can also create a test run parameter, which can check the details of the object instance before it is actually canceled. For more information about this parameter see Test Run Parameters.&lt;br /&gt;&lt;br /&gt;Export Parameters&lt;br /&gt;&lt;br /&gt;To report messages from the method call back to the calling program, you should create the parameter Return. For more information about this parameter see Return Parameters (Error Handling).&lt;br /&gt;You have to put the key of the created instance in another export parameter.&lt;br /&gt;Locking&lt;br /&gt;We recommend that you implement Cancel() BAPIs without the locking function and create your own BAPIs instead that lock the relevant data.&lt;br /&gt;&lt;br /&gt;Add&lt;subobject&gt; and Remove&lt;sub-object&gt;&lt;/sub-object&gt;&lt;/subobject&gt;&lt;br /&gt;&lt;subobject&gt;&lt;sub-object&gt; The BAPI Add&lt;sub-object&gt; adds a sub-object to an existing object instance and the BAPI and Remove&lt;sub-object&gt; removes a sub-object from an object instance. These BAPIs are instance methods.&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/subobject&gt;&lt;br /&gt;&lt;subobject&gt;&lt;sub-object&gt;&lt;sub-object&gt;&lt;sub-object&gt;&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/subobject&gt;&lt;br /&gt;&lt;subobject&gt;&lt;sub-object&gt;&lt;sub-object&gt;&lt;sub-object&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/sub-object&gt;&lt;/subobject&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BAPI  SAP II</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bapi-sap-ii.html</link><category>BAPI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:39:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-3033359084960012212</guid><description>BAPI Explorer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Definition&lt;br /&gt;&lt;br /&gt;The BAPI Explorer is the R/3 System working environment for developing BAPIs themselves and for developing with BAPIs.&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;Prerequisites&lt;br /&gt;The BAPI Explorer is available as of Release 4.6A and enhances or replaces the BAPI Browser used in earlier releases. The BAPI Explorer uses the latest HTML control technology. For this reason to work with the BAPI Explorer, you must be using a SAPgui of version 4.6A.&lt;br /&gt;&lt;br /&gt;If you are using a SAPgui from an earlier release, the BAPI Browser (Transaction BAPI45) is automatically called instead of the BAPI Explorer. For information about working in the BAPI Browser see BAPI Browser in the BAPI User Guide.&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;In the BAPI Explorer, application developers can get an overview of the status of BAPIs in the BOR. The BAPIs can be determined either by the position of the associated object or interface type in the component hierarchy in the BOR, or from an alphabetical list. All information required to use a particular BAPI is provided in the BAPI Explorer.&lt;br /&gt;&lt;br /&gt;The BAPI Explorer is used internally in SAP to develop BAPIs, but can also be used by customers and partners. The BAPI Explorer provides all the tools used to create BAPIs and the required development objects in an integrated programming environment. The entire development process of a BAPI takes place in the framework of form-controlled "projects" to achieve maximum quality, stability and usability of the BAPI.&lt;br /&gt;&lt;br /&gt;Structure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The BAPI Explorer is divided into two areas:&lt;br /&gt;&lt;br /&gt;• Hierarchy display&lt;br /&gt;Here all the business object types or interface types for which BAPIs have been defined are displayed. For further information see Working with Display Functions.&lt;br /&gt;• Work area&lt;br /&gt;Here the details and documentation of the development object selected in the hierarchy display can be viewed.&lt;br /&gt;The tools used to develop BAPIs are also available in the work area. For further information see Working with Tools and Projects.&lt;br /&gt;&lt;br /&gt;Integration&lt;br /&gt;&lt;br /&gt;To call the BAPI Explorer choose Tools  Business Framework  BAPI Explorer. To call it directly use Transaction BAPI.&lt;br /&gt;&lt;br /&gt;Working with Display Functions&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;In the hierarchy display of the BAPI Explorer all the business object types or interface types for which BAPIs have been defined are displayed.&lt;br /&gt;Using the tabs Alphabetical and Hierarchical in the hierarchy display, you can select whether the business object types or interface types are displayed alphabetically or as they are assigned in the component hierarchy in the BOR.&lt;br /&gt;By expanding the relevant nodes you can navigate up to the parameter level of individual BAPIs.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;The following display functions are also provided which enable you to directly access BAPIs and their details in the BOR.&lt;br /&gt;&lt;br /&gt;• Displaying details&lt;br /&gt;Under the Detail view of the work area all the technical details of the development object selected in the hierarchy are displayed.&lt;br /&gt;In most cases you can double-click on a field in the Detail display to get to the development environment or to display further information. For example, in the detail display for a particular method, by double clicking on the name of the function module, it will be displayed in the Function Builder.&lt;br /&gt;• Displaying and Printing Documentation&lt;br /&gt;In the Documentation view of the work area the documentation for the development object selected in the hierarchy is displayed.&lt;br /&gt;The data element documentation for each parameter field is contained in the documentation for structured BAPI parameters.&lt;br /&gt;&lt;br /&gt;If you have installed Microsoft Internet Explorer Version 4.0 on the front-end computer, you can print the documentation using the standard SAPgui print function.&lt;br /&gt;&lt;br /&gt;• Changing the level of the hierarchy display&lt;br /&gt;The component hierarchy may have many hierarchy levels. To make it easier to find a business object type and its BAPIs, you can use the function Goto  Change hierarchy level to limit the display to two hierarchy levels.&lt;br /&gt;&lt;br /&gt;• Specifying the BAPIs to be displayed&lt;br /&gt;The default is to display only released BAPIs of business object types. By choosing Goto  BAPIs to display, you can display all the BAPIs contained in the BOR, that is BAPIs of SAP interface types and BAPIs that have not yet been released.&lt;br /&gt;Business object types and interface types are identified by different symbols. To display these, choose Goto  Display legend.&lt;br /&gt;&lt;br /&gt;• Searching for BAPIs&lt;br /&gt;Using the standard functions Find and Find next you can search the displayed business object types or interface types using specified criteria (placeholders such as ' * ' can be used):&lt;br /&gt;&lt;br /&gt;• Object name, e.g. Business Process&lt;br /&gt;• Object type (technical object name) e.g. SAP0001&lt;br /&gt;• Object description, e.g. Plan*&lt;br /&gt;• Method name, e.g. GetList&lt;br /&gt;• Method description, e.g. object list*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Working with Tools and Projects&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The views Tools and Projects in the work area are mainly used for developing BAPIs.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;Depending on the development object selected in the hierarchy display, in the Tools view, the following tools and navigation options are provided:&lt;br /&gt;• Direct access to the Business Object Builder, Function Builder and ABAP Dictionary.&lt;br /&gt;• List generator to create lists of BAPIs using specified selection criteria.&lt;br /&gt;In the Project view you can create projects to assist you with following and documenting the development procedures below:&lt;br /&gt;&lt;br /&gt;• Implementing new BAPIs (for internal SAP use, BAPI developments must be carried out and documented using a project in the BAPI Explorer)&lt;br /&gt;• Changing released BAPIs (only for SAP internal use)&lt;br /&gt;• Requesting a new business object type (only for SAP internal use)&lt;br /&gt;For each of these projects there is a project form that takes you step by step through the entire development process and provides direct navigation options to the required development tools and information.&lt;br /&gt;Within the project management you can save and delete your projects and you can edit the projects managed by other users by selecting other users.&lt;br /&gt;If you have installed Microsoft Internet Explorer Version 4.0 on the front-end computer, you can print the project form using the standard SAPgui print function.&lt;br /&gt;&lt;br /&gt;Defining the Scenario&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;Before you program a BAPI you should clearly define the processes and situations the BAPI will be used for. BAPIs should only be implemented within the context of a meaningful business scenario.&lt;br /&gt;&lt;br /&gt;For examples of BAPI scenarios refer to Overview of ALE Integration Scenarios in the Library of ALE Business Processes. SAP developers will also find templates for defining and documenting BAPI scenarios.&lt;br /&gt;&lt;br /&gt;Process Flow&lt;br /&gt;&lt;br /&gt;To define the scenario the BAPI is to be used in, consider the following issues:&lt;br /&gt;&lt;br /&gt;• Which scenario is to be implemented?&lt;br /&gt;Every BAPI should be based on a model of a scenario in which it can be usefully employed.&lt;br /&gt;Keep in mind whilst you are planning the scenario that COMMIT WORK commands must not be used in BAPIs. COMMIT WORK commands can adversely effect the process flow of the scenario and how the BAPIs in the scenario work together.&lt;br /&gt;• Which SAP business object types are required and do they exist?&lt;br /&gt;From the scenario definition you can get information about the SAP business object types relevant to the BAPI scenario. If the business object types required do not exist, they must be created. For information about creating SAP business object types see the documentation, SAP Business Workflow. For SAP internal development you have to complete a business object request form in the BAPI Explorer.&lt;br /&gt;&lt;br /&gt;A BAPI is required to read the data of a company code. First of all, a list of all company codes is to be displayed. From this list a company code can be selected, and then using another BAPI, details about this company code are to be displayed.&lt;br /&gt;The relevant SAP business object type for this scenario is Company Code.&lt;br /&gt;&lt;br /&gt;• What functionality should the BAPI provide and how does it affect related BAPIs, especially the other BAPIs of the SAP business object type in question?&lt;br /&gt;In line with the scenario concept, BAPIs must complement each other to create a complete scenario. Their relationships with each other must be clearly defined.&lt;br /&gt;&lt;br /&gt;To read the details of a company code as described in the above example scenario, two BAPIs are required:&lt;br /&gt;&lt;br /&gt;• To display all the company codes&lt;br /&gt;• To display a specific company code&lt;br /&gt;The interdependency between these two BAPIs is evident because first the list of company codes is displayed to obtain the ID of the specific company code sought. From this ID details of the company code can be displayed.&lt;br /&gt;However, the two BAPIs remain functionally independent of each other, because if the company code ID is known, the BAPI "Display details of a specific company code" can be used without first calling the BAPI "Display list of all company codes".&lt;br /&gt;• To what extent can the BAPI's functionality be implemented within the scope of the business object?&lt;br /&gt;&lt;br /&gt;A BAPI should be developed so that it provides functionality exclusively within the context of its associated SAP business object type. If the data of a different SAP business object type is to be read or updated then the appropriate interface for this object type must be used. The functions or methods of these other object types are used implicitly.&lt;br /&gt;&lt;br /&gt;The BAPIs required to read the details of a company code in the above example scenario are only able to access data in the SAP business object type Company Code. Other object types are not involved.&lt;br /&gt;&lt;br /&gt;• Is the BAPI assigned to the SAP business object type in a meaningful and semantically correct way?&lt;br /&gt;Result&lt;br /&gt;Once you have considered these issues you will be able to clearly conceptualize the functionality of the planned BAPI(s). You will also have identified the SAP business object types relevant to the BAPI scenario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>BAPI SAP I</title><link>http://sapabapbasis4u.blogspot.com/2009/03/bapi-sap.html</link><category>BAPI'S IN ABAP</category><pubDate>Wed, 11 Mar 2009 11:38:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-6549188692811185747</guid><description>Definition&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A Business Application Programming Interface (BAPI) is a precisely defined interface providing access to processes and data in business application systems such as R/3.&lt;br /&gt;BAPIs of SAP Business Object Types&lt;br /&gt;BAPIs are defined as API methods of SAP business object types. These business object types and their BAPIs are described and stored in the Business Object Repository (BOR). A BAPI is implemented as a function module, that is stored and described in the Function Builder.&lt;br /&gt;&lt;br /&gt;BAPIs of SAP Interface Types&lt;br /&gt;&lt;br /&gt;As of Release 4.5A BAPIs can also describe interfaces, implemented outside the R/3 System that can be called in external systems by R/3 Systems. These BAPIs are known as BAPIs used for outbound processing. The target system is determined for the BAPI call in the distribution model of Application Link Enabling (ALE).&lt;br /&gt;&lt;br /&gt;BAPIs used for outbound processing are defined in the Business Object Repository (BOR) as API methods of SAP Interface Types. Functions implemented outside the R/3 System can be standardized and made available as BAPIs. For further information see BAPIs Used For Outbound Processing.&lt;br /&gt;&lt;br /&gt;Integration&lt;br /&gt;&lt;br /&gt;BAPIs can be called within the R/3 System from external application systems and other programs. BAPIs are the communication standard for business applications. BAPI interface technology forms the basis for the following developments:&lt;br /&gt;&lt;br /&gt;• Connecting:&lt;br /&gt;• New R/3 components, for example, Advanced Planner and Optimizer (APO) and Business Information Warehouse (BW).&lt;br /&gt;&lt;br /&gt;• Non-SAP software&lt;br /&gt;• Legacy systems&lt;br /&gt;• Isolating components within the R/3 System in the context of Business Framework&lt;br /&gt;• Distributed R/3 scenarios with asynchronous connections using Application Link Enabling (ALE)&lt;br /&gt;• Connecting R/3 Systems to the Internet using Internet Application Components (IACs)&lt;br /&gt;• PC programs as front-end to the R/3 System, for example, Visual Basic (Microsoft) or Visual Age for Java (IBM).&lt;br /&gt;• Workflow applications that extend beyond system boundaries&lt;br /&gt;• Customers' and partners' own developments&lt;br /&gt;&lt;br /&gt;BAPIs - Interfaces to the R/3 System&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BOR&lt;br /&gt;&lt;br /&gt;Definition&lt;br /&gt;&lt;br /&gt;The Business Object Repository (BOR) is the object-oriented repository in the R/3 System. It contains the SAP business object types and SAP interface types as well as their components, such as methods, attributes and events.&lt;br /&gt;&lt;br /&gt;BAPIs are defined as methods of SAP business object types (or SAP interface types) in the BOR. Thus defined, the BAPIs become standard with full stability guarantees as regards their content and interface.&lt;br /&gt;For general information on creating business objects see the documentation on SAP Business Workflow.&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;br /&gt;The BOR has the following functions for SAP business object types and their BAPIs:&lt;br /&gt;&lt;br /&gt;• Provides an object-oriented view of R/3 System data and processes.&lt;br /&gt;R/3 application functions are accessed using methods (BAPIs) of SAP Business Objects. Implementation information is encapsulated; only the interface functionality of the method is visible to the user.&lt;br /&gt;• Arranges the various interfaces in accordance with the component hierarchy, enabling functions to be searched and retrieved quickly and simply.&lt;br /&gt;This finds the functionality searched for quickly and simply.&lt;br /&gt;• Manages BAPIs in release updates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BAPI interface enhancements made by adding parameters are recorded in the BOR. Previous interface versions can thus be reconstructed at any time. When a BAPI is created the release version of the new BAPI is recorded in the BOR. The same applies when any interface parameter is created.&lt;br /&gt;&lt;br /&gt;The version control of the function module that a BAPI is based on is managed in the Function Builder.&lt;br /&gt;&lt;br /&gt;• Ensures interface stability.&lt;br /&gt;Any interface changes that are carried out in the BOR, are automatically checked for syntax compatibility against the associated development objects in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;Integration&lt;br /&gt;&lt;br /&gt;A BAPI is implemented as a function module that is stored and described in the Function Builder. You should only define a BAPI as a method of an SAP business object type in the BOR, if the function module that the BAPI is based on has been fully implemented.&lt;br /&gt;&lt;br /&gt;Access to the BOR is restricted at SAP.&lt;br /&gt;BOR/BAPI Wizard&lt;br /&gt;The BOR/BAPI Wizard helps you to create new BAPIs in the BOR. It takes you through the process step by step.&lt;br /&gt;&lt;br /&gt;Defining and Implementing the BAPI&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;Various components of the ABAP Workbench are used when you define and implement a BAPI. These are shown in the graphic below.&lt;br /&gt;&lt;br /&gt;BAPIs are defined in the Business Object Repository (BOR) as API methods of SAP business object types. BAPIs are implemented in the Function Builder as RFC-enabled function modules. The definitions and descriptions of the data structures used by the BAPI are stored in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;BOR, Function Builder and ABAP Dictionary&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Prerequisites&lt;br /&gt;&lt;br /&gt;For function modules that implement BAPIs, certain standards and rules must be adhered to over and above the standard programming rules for function modules.&lt;br /&gt;&lt;br /&gt;The following sections guide you through the steps involved in developing a BAPI. The sections contain information about the guidelines and conventions that you should adhere to when defining and implementing a BAPI. When implementing BAPIs follow the requirements below to ensure you achieve consistent behavior and representation of BAPIs as object-oriented methods of SAP business object types or SAP interface types.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>TABLE CONTROL IN BDC</title><link>http://sapabapbasis4u.blogspot.com/2009/03/table-control-in-bdc.html</link><category>ABAP BDC COMPLETE</category><pubDate>Wed, 11 Mar 2009 11:37:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-4832653718742873192</guid><description>Steploop and table contol is inevitable in certain transactions. When we run BDC for such transactions, we will face the situation: how many visible lines of steploop/tablecontrol are on the screen?&lt;br /&gt;&lt;br /&gt;Although we can always find certain method to deal with it, such as function code 'NP', 'POPO', considering some extreme situation: there is only one line visible one the screen, our BDC program should display an error message. (See transaction 'ME21', we you resize your screen to let only one row visible, you can not enter mutiple lines on this screen even you use 'NP')&lt;br /&gt;&lt;br /&gt;we can determine the number of visible lines on Transaction Screen from our Calling BDC program.&lt;br /&gt;&lt;br /&gt;Demo ABAP code has two purposes:&lt;br /&gt;&lt;br /&gt;1. how to determine number of visible lines and how to calculte page number;&lt;br /&gt;(the 'calpage' routine has been modify to meet general purpose usage)&lt;br /&gt;&lt;br /&gt;2. using field symbol in BDC program, please pay special attention to the difference&lt;br /&gt;in Static ASSIGN and Dynamic ASSIGN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step1: go to screen painter to display the screen 121, then we can count the fixed line on this screen, there is 7 lines above the steploop and 2 lines below the steploop, so there are total 9 fixed lines on this screen. This means except these 9 lines, all the other line is for step loop.&lt;br /&gt;&lt;br /&gt;Then have a look at steploop itselp, one entry of it will occupy two lines.&lt;br /&gt;(Be careful, for table control, the head and the bottom scroll bar will possess another two fixed lines, and there is a maximum number for table line)&lt;br /&gt;Now we have : FixedLine = 9&lt;br /&gt;LoopLine = 2(for table control, LoopLine is always equal to 1)&lt;br /&gt;&lt;br /&gt;Step2: go to transaction itself(ME21) to see how it roll page, in ME21, the first line of new page is always occupied by the last line of last page, so it begin with index '02', but in some other case, fisrt line is empty and ready for input.&lt;br /&gt;Now we have: FirstLine = 0&lt;br /&gt;or FirstLine = 1 ( in our case, FirstLine is 1 because the first line of new page is fulfilled)&lt;br /&gt;&lt;br /&gt;Step3: write a subroutine calcalculating number of pages&lt;br /&gt;(here, the name of actual parameter is the same as formal parameter)&lt;br /&gt;&lt;br /&gt;global data: FixedLine type i, " number of fixed line on a certain screen&lt;br /&gt;LoopLine type i, " the number of lines occupied by one steploop item&lt;br /&gt;FirstLine type i, " possbile value 0 or 1, 0 stand for the first line of new " scrolling screen is empty, otherwise is 1&lt;br /&gt;Dataline type i, " number of items you will use in BDC, using DESCRIBE to get&lt;br /&gt;pageno type i, " you need to scroll screen how many times.&lt;br /&gt;line type i, " number of lines appears on the screen.&lt;br /&gt;index(2) type N, " the screen index for certain item&lt;br /&gt;begin type i, " from parameter of loop&lt;br /&gt;end type i. " to parameter of loop&lt;br /&gt;&lt;br /&gt;*in code sample, the DataTable-linindex stands for the table index number of this line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;form calpage using FixedLine type i (see step 1)&lt;br /&gt;LoopLine type i (see step 1)&lt;br /&gt;FirstLine type i (see step 2)&lt;br /&gt;DataLine type i ( this is the item number you will enter in transaction)&lt;br /&gt;changing pageno type i (return the number of page, depends on run-time visible line in table control/ Step Loop)&lt;br /&gt;changing line type i.(visible lines one the screen)&lt;br /&gt;data: midd type i,&lt;br /&gt;vline type i, "visible lines&lt;br /&gt;if DataLine eq 0.&lt;br /&gt;Message eXXX.&lt;br /&gt;endif.&lt;br /&gt;&lt;br /&gt;vline = ( sy-srows - FixedLine ) div LoopLine.&lt;br /&gt;*for table control, you should compare vline with maximum line of&lt;br /&gt;*table control, then take the small one that is min(vline, maximum)&lt;br /&gt;*here only illustrate step loop&lt;br /&gt;&lt;br /&gt;if FirstLine eq 0.&lt;br /&gt;pageno = DataLine div vline.&lt;br /&gt;&lt;br /&gt;if pageno eq 0.&lt;br /&gt;pageno = pageno + 1.&lt;br /&gt;endif.&lt;br /&gt;elseif FirstLine eq 1.&lt;br /&gt;pageno = ( DataLine - 1 ) div ( vline - 1 ) + 1.&lt;br /&gt;midd = ( DataLine - 1 ) mod ( vline - 1).&lt;br /&gt;if midd = 0 and DataLine gt 1.&lt;br /&gt;pageno = pageno - 1.&lt;br /&gt;endif.&lt;br /&gt;endif.&lt;br /&gt;&lt;br /&gt;line = vline.&lt;br /&gt;&lt;br /&gt;endform.&lt;br /&gt;&lt;br /&gt;Step4 write a subroutine to calculate the line index for each item.&lt;br /&gt;&lt;br /&gt;form calindex using Line type i (visible lines on the screen)&lt;br /&gt;FirstLine type i(see step 2)&lt;br /&gt;LineIndex type i(item index)&lt;br /&gt;changing Index type n. (index on the screen)&lt;br /&gt;&lt;br /&gt;if FirstLine = 0.&lt;br /&gt;index = LineIndex mod Line.&lt;br /&gt;if index = '00'.&lt;br /&gt;index = Line.&lt;br /&gt;endif.&lt;br /&gt;elseif FirstLine = 1.&lt;br /&gt;index = LineIndex mod ( Line - 1 ).&lt;br /&gt;if ( index between 1 and 0 ) and LineIndex gt 1.&lt;br /&gt;index = index + Line - 1.&lt;br /&gt;endif.&lt;br /&gt;if Line = 2.&lt;br /&gt;index = index + Line - 1.&lt;br /&gt;endif.&lt;br /&gt;endif.&lt;br /&gt;&lt;br /&gt;endform.&lt;br /&gt;&lt;br /&gt;Step5 write a subroutine to calculate the loop range.&lt;br /&gt;&lt;br /&gt;form calrange using Line type i ( visible lines on the screen)&lt;br /&gt;DataLine type i&lt;br /&gt;FirstLine type i&lt;br /&gt;loopindex like sy-index&lt;br /&gt;changing begin type i&lt;br /&gt;end type i.&lt;br /&gt;&lt;br /&gt;If FirstLine = 0.&lt;br /&gt;if loopindex = 1.&lt;br /&gt;begin = 1.&lt;br /&gt;if DataLine &lt;= Line. end = DataLine. else. end = Line. endif. elseif loopindex gt 1. begin = Line * ( loopindex - 1 ) + 1. end = Line * loopindex. if end gt DataLine. end = DataLine. endif. endif. elseif FirstLine = 1. if loopindex = 1. begin = 1. if DataLine &lt;= Line. end = DataLine. else. end = Line. endif. elseif loop index gt 1. begin = ( Line - 1 ) * ( loopindex - 1 ) + 2. end = ( Line - 1 ) * ( loopindex - 1 ) + Line. if end gt DataLine. end = DataLine. endif. endif. endif. endform. Step6 using field sysbol in your BDC, for example: in ME21, but you should calculate each item will correponding to which index in steploop/Table Control form creat_bdc. field-symbols: &lt;material&gt;, &lt;quan&gt;, &lt;indicator&gt;.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;data: name1(14) value 'EKPO-EMATN(XX)',&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; name2(14) value 'EKPO-MENGE(XX)',&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; name3(15) value 'RM06E-SELKZ(XX)'.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;assign: name1 to &lt;material&gt;,&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt; name2 to &lt;quan&gt;,&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt; name3 to &lt;indicator&gt;.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;do pageno times.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;if sy-index gt 1&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;*insert scroll page ok_code"&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;endif.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; perform calrange using Line DataLine FirstLine sy-index&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; changing begin end.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;loop at DataTable from begin to end.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; perform calindex using Line FirstLine DataTable-LineIndex changing Index.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; name1+11(2) = Index.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; name2+11(2) = Index.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; name3+12(2) = Index.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; perform bdcfield using &lt;material&gt; DataTable-matnr.&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt; perform bdcfield using &lt;quan&gt; DataTable-menge.&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt; perform bdcfield using &lt;indicator&gt; DataTable-indicator.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt; .&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;endloop.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;enddo.&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;br /&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;material&gt;&lt;quan&gt;&lt;indicator&gt;&lt;span style="font-weight: bold;"&gt;RELATED LINKS&lt;/span&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;&lt;/indicator&gt;&lt;/quan&gt;&lt;/material&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item><item><title>USER EXITS IN DETAIL</title><link>http://sapabapbasis4u.blogspot.com/2009/03/user-exits-in-detail.html</link><category>MODIFICATIONS USER EIXTS CUSTOMER EIXTS</category><pubDate>Wed, 11 Mar 2009 11:35:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5550693554772366545.post-1388418595460927727</guid><description>In computer software, a user exit is a place in a software program where a customer can arrange for their own tailor-made program to be called.&lt;br /&gt;&lt;br /&gt;In the R/3 system from SAP, a user exit is contrasted with a customer exit and allows a customer's developer to access program components and data objects within the R/3 system. In R/3, some user exits use Include statements to include customer program enhancements that are called from the program.&lt;br /&gt;&lt;br /&gt;Other user exits use tables that are accessed through customization.&lt;br /&gt;&lt;br /&gt;Overview&lt;br /&gt;&lt;br /&gt;Extension of SAP functionality&lt;br /&gt;&lt;br /&gt;SAP makes different possibilities available to extend SAP functionality in the R/3 without modifying the delivered R/3-Standard. Thus these extensions are further present also after a R/3-Release-Wechsel.&lt;br /&gt;&lt;br /&gt;• User exit&lt;br /&gt;• Field exit&lt;br /&gt;• Text extensions&lt;br /&gt;• Customer exit&lt;br /&gt;• Table extensions&lt;br /&gt;&lt;br /&gt;1. User exit&lt;br /&gt;&lt;br /&gt;User exits are original one in the selling module (SD) developed expandability.&lt;br /&gt;They consist of empty subroutines (FORM) in special Includes, which can be filled by a ABAP Use developer.&lt;br /&gt;&lt;br /&gt;In special places in the SA P-CODE such subroutine references were inserted by SAP. An extension is thus only possible, where SAP planned it.&lt;br /&gt;&lt;br /&gt;They usually offer a rather rudimentary expandability, since purely technically objects in the SAP name area are modified.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Field exit&lt;br /&gt;&lt;br /&gt;Field exits are bypasses of a Dynprofield with data element purchase into a functional module. These will go through when leaving the Dynpros. There are global and local field exits.&lt;br /&gt;&lt;br /&gt;Global field exits&lt;br /&gt;&lt;br /&gt;are not limited to a Dynpro. If a data element is used on several Dynpros, after activation of the field exit with all this Dynpros to a functional module one branches out.&lt;br /&gt;&lt;br /&gt;Local one field exit&lt;br /&gt;&lt;br /&gt;work only on a Dynpro limited. There is the possibility of putting on bus to 36 local field exits to a data element.&lt;br /&gt;3. Text extensions&lt;br /&gt;With text extensions it acts around user keywords and user documentation (F1-Hilfe) to data elements. The new keywords can refer to SAP documentation and to user documentation. Thus one has also the possibility of overwriting the keywords delivered by SAP.&lt;br /&gt;With text extensions the changes are global effective for all SAP applications concerned contrary to application extensions after activation.&lt;br /&gt;4. Customer exit&lt;br /&gt;An application function can be extended by application extensions by the customer. Customer exits must be intended by SAP. They consist generally of several components. The interface SAP/Kunde is clearly defined.&lt;br /&gt;With a R/3-Release-Wechsel and/or. Upgrade remain the customer extensions without effort.&lt;br /&gt;&lt;br /&gt;• Function exit&lt;br /&gt;• Menu exit&lt;br /&gt;• Dynpro exit&lt;br /&gt;&lt;br /&gt;A) Function exit&lt;br /&gt;By functional module exits the customer can implement additional logic in an application function.&lt;br /&gt;SAP built such exits in different places into many application functions. Thus are the interfaces are already given, and/or which data handed over.&lt;br /&gt;These functional modules can be filled now by the customer. It can insert also user Dynpros with associated processing logic and GUI surface and put on user text elements.&lt;br /&gt;&lt;br /&gt;B) Menu exit&lt;br /&gt;&lt;br /&gt;Menu exits make it for the customer possible to build and occupy with a function code in an SAP application new menu entries.&lt;br /&gt;SAP determined, where in the program additional function codes are queried and like to it is being reacted, either by a functional module exit or by an already firmly given functionality.&lt;br /&gt;&lt;br /&gt;C) Dynpro exit&lt;br /&gt;&lt;br /&gt;Dynpro exits permit the customer to arrange ranges of a dynpros reserved by SAP. Within these ranges large information can be indicated or data be seized. Those for this force fields by the customer on a user Dynpro are arranged.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In Details&lt;br /&gt;&lt;br /&gt;What is User Exits?&lt;br /&gt;&lt;br /&gt;The following document is about exits in SAP: -&lt;br /&gt;The R/3 enhancement concept allows you to add your own functionality to SAP’s standard business applications without having to modify the original applications.&lt;br /&gt;SAP creates user exits for specific programs, screens, and menus within standard R/3 applications.&lt;br /&gt;These exits do not contain any functionality. Instead, the customer exits act as hooks. You can hang your own add-on functionality onto these hooks.&lt;br /&gt;&lt;br /&gt;Types of Exits&lt;br /&gt;&lt;br /&gt;There are several different types of user exits. Each of these exits acts as hooks where you can attach or "hang" your own add-ons.&lt;br /&gt;&lt;br /&gt;Menu Exits&lt;br /&gt;&lt;br /&gt;Menu exits add items to the pulldown menus in standard SAP applications. You can use these menu items to call up your own screens or to trigger entire add-on applications.&lt;br /&gt;SAP creates menu exits by defining special menu items in the Menu Painter. These special entries have function codes that begin with "+" (a plus sign). You specify the menu item’s text when activating the item in an add-on project.&lt;br /&gt;&lt;br /&gt;Screen Exits&lt;br /&gt;&lt;br /&gt;Screen exits add fields to screens in R/3 applications. SAP creates screen exits by placing special subscreen areas on a standard R/3 screen and calling a customer subscreen from the standard screen’s flow logic.&lt;br /&gt;&lt;br /&gt;Function Module Exits&lt;br /&gt;&lt;br /&gt;Function module exits add functions to R/3 applications. Function module exits play a role in both menu and screen exits.&lt;br /&gt;When you add a new menu item to a standard pull down menu, you use a function module exit to define the actions that should take place once your menu is activated.&lt;br /&gt;Function module exits also control the data flow between standard programs and screen exit fields.&lt;br /&gt;&lt;br /&gt;SAP application developers create function module exits by writing calls to customer functions into the source code of standard R/3 programs.&lt;br /&gt;These calls have the following syntax:&lt;br /&gt;&lt;br /&gt;CALL CUSTOMER-FUNCTION ‘001’.&lt;br /&gt;&lt;br /&gt;Field Exits&lt;br /&gt;&lt;br /&gt;Field exits allow you to create your own programming logic for any data element in the Dictionary. You can use this logic to carry out checks, conversions, or business-related processing for any screen field. Example: The data element BBBNR identifies a company’s international location number. You might want to set up your R/3 System so that all international location numbers are larger than 100.&lt;br /&gt;The field exit concept lets you create a special function module that contains this logic.&lt;br /&gt;You assign the special function module to the data element BBBNR. You then assign the module to any programs and screens in which users can add new international location numbers. When you activate your field exit, the system automatically triggers your special routine whenever a user enters a company location number.&lt;br /&gt;In 4.6c, you can use "RSMODPRF" program to create field exits.&lt;br /&gt;An example of a user exits :-&lt;br /&gt;MODULE user_exit_0001 INPUT&lt;br /&gt;CASE okcode.&lt;br /&gt;    WHEN 'BACK OR EXIT'.&lt;br /&gt;        CASE sy-dynnr.&lt;br /&gt;                WHEN '100'.&lt;br /&gt;                     SET SCREEN 0.&lt;br /&gt;                     LEAVE SCREEN.&lt;br /&gt;                WHEN '200'.&lt;br /&gt;******************************************************************************&lt;br /&gt;**** Note that you can write any code that satisfy  your needs.                                                     ****&lt;br /&gt;**** But in this case, this was wrote as a sample code for reference sake.                                    ****&lt;br /&gt;**** And you can test it. ****&lt;br /&gt;******************************************************************************&lt;br /&gt;                     SET SCREEN 100.&lt;br /&gt;                     LEAVE SCREEN.&lt;br /&gt;         ENDCASE.&lt;br /&gt;  ENDCASE.   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SAP User Exits Routine&lt;br /&gt;&lt;br /&gt;User exits are routine which SAP allows you to add in additional customized programs process without affecting the standard SAP programs.&lt;br /&gt;SAP user exit are usually declare as a form routine :-&lt;br /&gt;form userexit_xxxxx&lt;br /&gt;   ........................&lt;br /&gt;endform&lt;br /&gt;In VL01 - Create Delivery Order, standard program SAPMV50A, the standard program did not check for storage location equal to space, and delivery quantity less than one when the user click the save button. Therefore I have to insert the additional checking into the userexit routine.&lt;br /&gt;&lt;br /&gt;Steps:-&lt;br /&gt;&lt;br /&gt;• Goto transaction VL01 to pick a Sales Order for delivery (you don't have to save the data)&lt;br /&gt;• In the initial screen, click System -&gt; Status -&gt; Double click on Program (Screen)&lt;br /&gt;• In the dialog program SAPMV50A, click Edit -&gt; Search/replace&lt;br /&gt;• Type userexit in the Find field, then click the In program radio button and hit Enter&lt;br /&gt;• A number of userexit routines will be displayed.  You'll have to roughly decide which is the correct userexit routine to used.&lt;br /&gt;Another way of determining the list of user exits could be bus executing the Tcode SE80.&lt;br /&gt;For example if U need to search for the user exits for the above mentioned program, execute the Tcode SE80 and enter the above program name,&lt;br /&gt;&lt;br /&gt;The highlighted row denotes a user exit, which is used in this program&lt;br /&gt;form userexit_save_document_prepare.&lt;br /&gt;case xlips-pstyv.&lt;br /&gt;when 'TAX' or 'REX'.&lt;br /&gt;*    Accept this two Delivery item category&lt;br /&gt;when 'REN'.&lt;br /&gt; if xlips-lgort = space.&lt;br /&gt;*    Reject this Delivery item category&lt;br /&gt;    message e001.&lt;br /&gt; endif.&lt;br /&gt;when others.&lt;br /&gt; if xlips-matnr &lt;&gt; space.&lt;br /&gt;*    Check storage location not space&lt;br /&gt;   if xlips-lgort = space.&lt;br /&gt;      message e002.&lt;br /&gt;   endif.&lt;br /&gt;*     Check delivery quantity not zero&lt;br /&gt;if xlips-pikmg &lt; pgmid =" 'R3TR'" object =" 'PROG'" obj_name =" tstc-pgmna." name =" tstc-pgmna." pname =" tstc-pgmna." funcname =" tfdir-funcname." pgmid =" 'R3TR'" object =" 'FUGR'" pgmid =" 'R3TR'" object =" 'SMOD'" devclass =" v_devclass." sprsl =" sy-langu" name =" jtab-obj_name." zzzz =" up"&gt;Bus.transactions-&gt;Base parameters-&gt;Validation&lt;br /&gt;/NORFB-&gt;Bus.transactions-&gt;Base parameters-&gt;Substitution&lt;br /&gt;Example&lt;br /&gt;=ULTE "FI_DOCU 001 "Parked SA,FY,SI=&gt;long text CORRESP. "&lt;br /&gt;&lt;br /&gt;=U&amp;amp;VALID_WBS_IN_ZUONR "FI_ITEM 011 Spon.Res: Check WBS valid in ZUONR"&lt;br /&gt;&lt;br /&gt;* changed in 4.5B (* Form UFIA -- formerly U&amp;amp;VALID_WBS_IN_ZUONR)&lt;br /&gt;User exits are form routines that the user programs. There are two types of&lt;br /&gt;&lt;br /&gt;user-exits:&lt;br /&gt;&lt;br /&gt;1. Validation exits are used in the prerequisites and checks. They have either the value 'T' for true or 'F' for false. They are interpreted as a part of the logical statement, like a constant or field comparison. For this type of user exit, you must fill a parameter with the results of your check ('T' for true; 'F' for false).&lt;br /&gt;Example&lt;br /&gt;FORM Uzzzz USING B_RESULT. "'T' or 'F'&lt;br /&gt;from program ZGGBR000 (ZGGBRI03)&lt;br /&gt;2. Substitution exits are used to change one or more fields. However, you can only change those fields that are permitted in the Boolean class for the substitution. You can display these fields by selecting the following menu options in substitution maintenance: &lt;extras&gt; Fields for substitutions&gt; &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Example &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;FORM Uzzzz USING COST_CENTER.&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt; from program ZGGBS000 (ZGGBSI02)&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Substitution Fields can be found from this window&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;  &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;/NORFB-&gt;Bus.transactions-&gt;Base parameters-&gt;Substitution-&gt;Call Pnt 2-&gt;Substitution step 3-&gt;Extras-&gt;Substitution flds &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;The name of the form pool (e.g., ZGGBR000 &amp;amp; ZGGBS000) that contains your user exit must be stored in table T80D.&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Note&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;1. Data declaration &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Tables and field stings cannot be declared in form routines, so that the contents can be used along with the calling transaction. &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;2. Parameter definition &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;It is important that you make declare the code generation program for your user exit; how many and what type of parameters you are using for the user exit. You do this by entering your newly defined user exits in the form routine GET_EXIT_TITLES. &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt; found in program ZGGBR000 (ZGGBRTIT)&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt; found in program ZGGBS000 (ZGGBSTIT)&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;One exception is the parameter for the results of a validation exit. You must not declare this, it is automatically generated be the system. What types of parameters are available and how you use them is described in the online documentation. When creating your user exits, you can use the example form pools delivered by SAP (RGGBR000 for validations; RGBBS000 for substitutions) as a reference. We recommend that you copy the example form pools delivered by SAP when creating your own user exits. In these example form pools, entries already exist in the form routine GET_EXIT_TITLES for the examples delivered. The GET_EXIT_TITLES must absolutely exist in your form pool. &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;You can find additional information on the creation of user exits in the online documentation on validations and substitutions.&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;SAP exits&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;SAP exits are form rountines programmed by SAP. The name of the form pool is SAPFGBEB.&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Syntax: &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;=Szzzz (zzzz = up to four characters)&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;FORM Szzzz using B_result. "'T' or 'F' &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Example &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;=S01 "SAP exit S01" &lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Display description of T80D configuration&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Return -&gt;&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;Change Validation: FI_ITEM (Message view)&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;&lt;/extras&gt;&lt;br /&gt;&lt;extras&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;/extras&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>anushaads@gmail.com (Technical Information)</author></item></channel></rss>