This document relates to computing systems and methods executed therein to perform availability check of a ware.
A supply chain management computing system may be used to plan, implement and control the operations of a supply chain as efficiently as possible and may span all movement and storage of raw materials, inventory, and finished products.
Availability check, also known as ATP (availability-to-promise) check, is an important tool within supply chain management in order to provide an answer to the question if a requested quantity of a ware, for example a material or product, is available on a requested date. For determining if a ware is available, or if an overconfirmation is present otherwise, stock, planned inward movements and planned outward movements, like for example sales orders, may be considered. In the case of customer demand, a sales order is a customer request to the company for the delivery of wares, for example goods or services, at a certain time.
Availability may be checked for only one demand, or also referred to as requirement, by only taking the information for that specific demand into consideration (single availability check). This may for example be used in make-to-order environments where a product is created according to a specific customer demand. However, in the case of make-to-stock environments, as for example in mass production, it may be desirable to check the availability for multiple demands (collective availability check), for example sales orders coming in from multiple customers. In this case, competing demands have to be considered and, by using availability check, confirmations may be issued accordingly which can comprise a confirmed delivery date and a confirmed quantity.
In an example manufacturing supply chain management computing system, the system may include a collective availability check suitable for checking the availability of a material or product for multiple demands at the same time. In a typical case, such a collective availability check involves a single availability check for each of the demands. This may be done by first deleting the data for all demands, also referred to as deconfirmation, meaning the deletion of the date and the quantity that had been confirmed up to that point of time. Subsequently, all demands may be reassigned. This may be done by checking all demands in the sequence in which they are ordered in a corresponding priority list, according to a priority each demand is given in relation to other demands. The demands may not be released until the last demand has been reassigned. For companies where there is a large number of demands, the collective availability check may consequently take a long time, since all demands are deconfirmed and a single availability check is carried out for each one anew. Additionally, with this availability check it is difficult to consider only subsets of demands, for example just those demands relevant for a specific time interval.
Computer-implemented methods, and associated computer program products and systems, are disclosed for checking availability of a ware for a set of demands requesting the ware. The methods may be referred to as collective availability checks that are performed for multiple demands.
In one aspect, the computer-implemented method includes obtaining a first data structure comprising dates in a predetermined time interval, supply information for the ware associated with those dates and demand information for the ware associated with those dates. The method also includes determining, for each of those dates in reverse order starting from a last date of that predetermined time interval, whether an overconfirmation for the ware is present on a specific date. This is done by comparing the supply information and the demand information. When an overconfirmation is present on the specific date, the overconfirmation is eliminated before proceeding with any subsequent overconfirmation determination by reassigning at least one demand on or before that specific date to a date after that specific date.
In various implementations, the methods may include one or more of the following features. The method may include obtaining a second data structure comprising that set of demands and including priority information for the demands, and, when the overconfirmation is present on the specific date, selecting the demand in the second data structure with a lowest priority to be reassigned. Reassigning that at least one demand may comprise reassigning the demands in the second data structure starting from the demand with the lowest priority until the overconfirmation is no longer present on that specific date. Furthermore, the demands may comprise a confirmation date (or confirmed date) indicating on which date each demand is to be met and a confirmation quantity (or confirmed quantity) indicating a quantity requested by said demand for said confirmation date. In such a case, reassigning the at least one demand may comprise changing the confirmation date of said demand to the date after said specific date. Alternatively or additionally, reassigning the at least one demand may comprise splitting the demand, when the confirmation quantity of said demand is greater than the amount of overconfirmation on said specific date. This may be done by changing the confirmation date to the date after that specific date for a first part of the confirmation quantity equaling an amount of the overconfirmation. For a second part of the confirmation quantity exceeding the amount of the overconfirmation the confirmation date remains unchanged. In addition, the supply information may comprise a cumulated supply cumulated starting from a first date of the predetermined time interval and the demand information may comprise a cumulated demand cumulated starting from the first date. In such a case, the method may comprise generating an overconfirmation information indicating that the overconfirmation is present when the cumulated demand on that date exceeds the cumulated supply on that date. Accordingly, the overconfirmation information may indicate that no overconfirmation is present when the cumulated demand equals or is smaller than the cumulated demand on that date. Finally, the set of demands may comprise at least one of the following: sales orders, service orders, stock transfer demands, internal demands and component demands of production orders and planned production orders.
In another aspect, a computer program product is disclosed. The computer program product is tangibly embodied in a computer-readable storage medium and includes instructions that, when executed, perform operations for checking availability of a ware for a set of demands requesting the ware as described in connection with the methods described above. In yet another aspect, systems are disclosed that are capable of checking availability of a ware for a set of demands requesting the ware as described in connection with the methods described above.
Implementations can provide any, all or none of the following advantages. Considering that there can be a large number of demands and a large number of supply deliveries, the computation time of a method for collective availability check should be short in order to issue confirmations to the customers as quickly and as updated as possible. By determining, for each date in reverse order starting from the last date, whether an overconfirmation is present on a specific date and reassigning at least one demand to a later point of time than the specific date, it is possible to ensure that a demand is touched at most once during collective availability check, which is important for the performance of the method. Also, demands of higher priority in the priority list do most likely not need to be touched. Only a subset of all demands, the least important demands, are reassigned while all other demands, the most important demands, keep their original confirmation date and quantity, which is again important for the performance of the method. Consequently, due to improved performance, it is possible to perform availability check at almost every point of time (for example also during working time which is mostly during day time) in a considerably short amount of time, of course depending on the amount of data to be checked. Furthermore, since the availability check is based on checking a predetermined time interval, any time interval, including very short time intervals, can easily be checked. For planning purposes within supply chain management for example, the planner is thus very flexible in defining a time interval to be checked. Defining a time interval to be checked may for example be performed as part of a delivery release process towards the execution date. In such a case, checking a short time interval near the execution date may directly be included in the delivery release process and the feasibility of the delivery request may be ensured.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Even though the demands referred to in
While this and other examples herein refer to products being supplied and/or demanded, other wares than products can be considered as well. In other implementations, wares such as services can be supplied and/or demanded, for example in a computer system that schedules availability of consultants or other professionals.
ATP check component 107 may be placed within any suitable platform or system. In one implementation, the ATP check component may be placed within an Enterprise Resource Planning (ERP) System, for example the R/3 system by SAP AG, Walldorf, Germany. In another implementation, the ATP check component may be placed within an Advanced Planning and Information (APO) system, for example the APO system by SAP AG, Walldorf, Germany. In yet another implementation, the ATP check may be placed within a system for small and medium sized businesses, like for example a Business By Design system by SAP AG, Walldorf, Germany.
ATP check component 107 may be able to access supply and demand data 108 and to perform a collective product availability check for a set of demands. When there are multiple demands for a ware, it might be the case that more demand is confirmed on a certain date than supply is available on that specific date. In such a case, an overconfirmation is present on that date. Overconfirmations may for example occur when a change is made in the supply and demand data, for example when a requested date or quantity of a demand is changed or when a supply delivery changes. Demands that had a confirmed date and quantity up to that point of time, might no longer be confirmed after a change in the supply and demand data has occurred.
Referring to
In
In
Assuming that when time proceeds, an information 310 is received that a planned supply delivery is delayed. Supply and demand data 304 is updated and forms updated supply and demand data 311. When a collective availability check 313 is then initiated for a second point of time for all sales orders with a requested delivery date within the next two weeks for example, using a command 312, not all sales orders might get their requested, and up to that point of time confirmed, delivery date or quantity due to the occurrence of overconfirmation. Accordingly, new confirmation 314 for at least one sales order, including a new confirmed delivery date and quantity, may be issued to customer relationship management 301.
In
The first block 410 of obtaining data includes, in step 411, obtaining a supply-demand data structure comprising dates in a certain time interval as well as supply and demand information associated with those dates. In step 412, a priority list, or priority data structure, may also be obtained, which includes the set of demands and priority information for the demands. Steps 411 and 412 of obtaining data structures may be performed in any possible sequence or may be performed simultaneously.
Priority of a demand may be determined in any suitable way of determination. This may for example include the use of a suitable function depending on one or more parameters. Examples of parameters are requested delivery date or importance of the customer. In this way, the demands may be ordered according to their importance. In some implementations, a user can specify the priority for each demand, either when the demand is entered in the system or otherwise. The most important demand to be fulfilled is given highest priority in the priority list, wherein the demand having least importance is given lowest priority in the priority list.
Eliminating overconfirmations (block 420) includes, in step 421, first determining for each date whether an overconfirmation is present or not, starting from the last date of the time interval. Last date means in this context the latest date of the time interval, for example the last day of a month for a time interval of a month. The time interval is checked going back in time. While checking in this sequence, it is desired to identify the dates on which an overconfirmation is present. In step 422, when an overconfirmation is present on a specific date, at least one demand on or before that specific date is reassigned, starting from a demand with a lowest priority. Demands can be reassigned until the overconfirmation is no longer present on that specific date. Demands of higher priority in the priority list do not need to be touched. In this way, only the least important demands are reassigned while the most important demands keep their confirmation date and quantity. Reassigning at least one demand, when an overconfirmation is detected, is performed until no more overconfirmation is present in the time interval. By determining, for each date in reverse order starting from the last date, whether an overconfirmation is present on a specific date and reassigning at least one demand to a later point of time than the specific date, it is possible to ensure that each demand is touched at most once during collective availability check, which is important for the performance of the method.
In step 431 of block 430, the results of the collective availability check, like confirmation dates and possibly also confirmation quantities, may be output to the customers for example. Outputting the results may be done in any suitable manner.
However, if an overconfirmation is present on the current date, the method determines, in step 630, if the date of the current demand, for example the confirmed delivery date of the demand, is on or before the current date. If it is after, meaning later, than the current date, that demand has no influence on the overconfirmation on the current date and the method selects the next demand in step 650. However, if the date of the current demand is on or prior to the current date, the current demand is reassigned in step 640. After incrementing the current demand by one demand above in priority (step 650), it is determined if all demands in the priority list have already been checked in step 660. If this is not the case, the method returns to step 620 and determines if there is still an overconfirmation present on the current date. If so, one or more demands need to be reassigned as explained with reference to steps 630 to 660 above.
If no more overconfirmation is present, the method turns to step 670 and updates the supply-demand data structure, in order to account for changes in the supply and demand data, for example caused by demands that have been reassigned in a preceding iteration. In step 680, the current date is then reduced by one and as long as the current date has not arrived at the first date of the time interval, or any other suitable termination condition is achieved, the method repeats steps 620 to 680 in the manner described above. When the method terminates, all overconfirmations within the time interval have been eliminated.
In
At the beginning of the method, in
As can be seen from this example, a demand can also be reassigned to a date outside the time interval to be checked. In a case where the time interval to be checked represents the whole time interval for which demand and supply data is available and where the total cumulated demand exceeds the total cumulated supply (as indicated in
Referring to
When using the method described above for eliminating overconfirmations, the first iteration is to check the last date of the time interval. This first iteration plays an important role, in that the amount of overconfirmation, which has cumulated up to the last date, is eliminated by reassigning demands to a date after the last date, behind the so called check horizon. These demands, which are the least important ones, are not considered in the time interval of interest anymore. The first iteration therefore removes the exceeding demand present within the time interval of interest. All preceding iterations for earlier dates may also involve reassignment of demands, keep the demands within the time interval of interest.
In a practical case of supply chain management, the number of supply deliveries and especially the number of demands can become very high.
The supply-demand structure comprises dates 1011, the corresponding supply 1012 and the demand by date 1014 which has been calculated from the priority data structure 1020. The supply-demand data structure further comprises the calculated cumulated supply 1013 and the calculated cumulated demand 1015. An overconfirmation 1016 is then generated by subtracting the cumulated supply 1013 from the cumulated demand 1015. If the result is zero or has a positive sign, the overconfirmation information 1016 is set to “FALSE”, indicating that no overconfirmation is present. If the result is that the cumulated demand exceeds the cumulated supply, the overconfirmation information is set to “TRUE”, indicating that an overconfirmation is present. Accordingly, in
The priority data structure 1020 comprises demands 1030 to 1060, one in each row. Each demand has a requested date 1021, priority information 1022 indicating the priority for the demand and a quantity 1023 (for simplification purposes set to one in this example). At the beginning, for each demand 1030 to 1060 confirmation date 1024 is set to be requested date 1021. However, demands, most likely demands having least priority, might later be reassigned to a later date in one of the preceding iterations. In this example, the higher the number of the priority information 1022 is, the less important the demand is. This means, demands having a low number as priority information 1022, for example 1 for demand 1030, have the highest priority. Accordingly, demands having a high number as priority information 1022, for example 10 for demand 1060, have the least priority. However, it should be noted that the priority information indicating the priority of a demand may be of any other suitable type. Demands can also have the same number as priority information 1022 as can be seen in priority data structure 1020. The sequence in which they appear in the priority data structure 1020 may then be determined by other suitable priority conditions.
When starting to eliminate overconfirmations, the current date is first set to the last date in the time interval. On date 14, an overconfirmation of amount 5 is present. The priority data structure 1020 is checked starting from the demand with the lowest priority, which is demand 1060. Demands 1060 to 1056 are subsequently reassigned to the date after the current date, which is date 15, as indicated by the rows highlighted in gray in priority data structure 1020 of
While checking the supply-demand data structure 1010 and going back in time, referring still to
The next demand in the priority data structure, demand 1051, again has a confirmation date which is not on or prior to the current date. However, demands 1050 to 1043 can be reassigned to the date after the current date, thereby entirely eliminating the overconfirmation on date 10. The eight demands reassigned are marked by the rows highlighted in gray in the priority data structure 1020 of
When applying this method on real data in supply chain management, any desired time interval may be checked and the overconfirmations may be eliminated within this time interval, thereby only considering a minimum subset of the total supply and demand data available. While checking a specific subset might be important in daily use of collective availability check, it may still be desired to check the total supply and demand data once in a while, perhaps not during working time, as at night, when there is enough time and resources available to check big amount of data.
In the following an exemplary software implementation of an exemplary method is illustrated by means of a subroutine named “Check”. For clarity, explanatory comments have been included next to some steps, and these are indicated by italics and by an apostrophe (') at the beginning of the line.
First, a supply-demand data structure (“Supply”) and a priority data structure (“Demand”) are obtained in form of worksheets. In this example, the time interval spans 14 dates and 30 demands are present, corresponding to the example set forth with reference to
The memory 1120 stores information within the system 1100. In one implementation, the memory 1120 is a computer-readable medium. In one implementation, the memory 1120 is a volatile memory unit. In another implementation, the memory 1120 is a non-volatile memory unit.
The storage device 1130 is capable of providing mass storage for the system 1100. In one implementation, the storage device 1130 is a computer-readable medium. In various different implementations, the storage device 1130 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
The input/output device 1140 provides input/output operations for the system 1100. In one implementation, the input/output device 1140 includes a keyboard and/or pointing device. In another implementation, the input/output device 1140 includes a display unit for displaying graphical user interfaces.
The features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The apparatus can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output. The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.