PPF - Development - Guide
更新时间:2023-10-15 10:42:01 阅读量: 综合文库 文档下载
- ppf是什么意思推荐度:
- 相关推荐
PPF
Post Processing Framework
Guidelines for application developers
June 30, 2003
Contact Persons: Daniel-Alexander Heller (PPF)
PPF
Contents:
1 PPF Overview ............................................................................................................................... 4 2 Preparation ................................................................................................................................... 5
2.1
Necessary Classes .............................................................................................................................. 5
The implementation steps are explained using the example of a demo application. The demo application and all mentioned classes are available in all systems (transaction SPPFDEMO, development class SPPF_DEMO). ......... 5 2.1.1 Application Class ........................................................................................................................................ 5 2.1.2 Application-Specific Processing ................................................................................................................. 9
2.2
Customizing ..................................................................................................................................... 15 2.2.1 Define New Application ........................................................................................................................... 15 2.2.2 Defining the Action Profile ....................................................................................................................... 16 2.2.3 Define Action Definitions for the Action Profile ...................................................................................... 17 2.2.4 Details for the Action Definition .............................................................................................................. 18 2.2.5 Assignment of Processing Types for an Action Definition ....................................................................... 20 Determination and Merging of Actions ......................................................................................... 23 2.3.1 Determination (Condition Configuration) ................................................................................................. 23 2.3.2 Action Merging ......................................................................................................................................... 28
Calling the PPF................................................................................................................................ 29
2.3
3 Interaction Between Application and PPF at Runtime ............................................................ 29
3.1 3.2
Processing Actions........................................................................................................................... 32 3.2.1 Immediate Processing ............................................................................................................................... 32 3.2.2 Processing with Document Posting ........................................................................................................... 32 3.2.3 Later Processing ........................................................................................................................................ 32 3.2.4 Manual Triggering of Processing in the Dialog ........................................................................................ 32 User Interface at Runtime .............................................................................................................. 33 3.3.1 Standard User Interface ............................................................................................................................. 33 3.3.2 Connection of Generic Object Services (GOS)......................................................................................... 35 Transaction Concept ....................................................................................................................... 36 3.4.1 Overview ................................................................................................................................................... 36 3.4.2 Object Pool ............................................................................................................................................... 36
3.3
3.4
4 Administration User Interface ................................................................................................... 38 5 Extendibility ................................................................................................................................ 39
5.1
Business Application Add Ins (BAdIs) .......................................................................................... 39 5.1.1 Exit for the printer determination (PRINTER_DETERM_PPF) .............................................................. 39 5.1.2 Exit After Generated Action (TRIGGER_EXECUTED) ......................................................................... 39
The BADI has the application names as the filter value. The action is also transferred and can deliver its processing status (successful, with error) or other information. .......................................... 39 5.1.3 Exit for Context Extension (CONTEXT_EXTEND_PPF) ....................................................................... 39 5.1.4 Exit for Completion of Processing Options (COMPLETE_PROC_PPF) ................................................. 40 5.1.5 Extend Container for Condition Evaluation (CONTAINER_PPF)........................................................... 40 5.1.6 Exit for Execution of Actions (EXEC_METHODCALL_PPF) ............................................................... 40 5.1.7 Exit for Getting Possible Partner Functions of an Application (GET_PARTN_ROLES_PPF )............... 41 5.1.8 Exit for Double Clicking on Values in the Display (GRID_CLICK_PPF) ............................................... 41 5.1.9 Exit for Checking if Deletion of Action Profile is allowed (CONTEXT_DELETE_PPF) ....................... 41 5.1.10 Exit for evaluation of schedule conditions (EVAL_SCHEDCOND_PPF) ............................................... 41 5.1.11 Exit for evaluation of start conditions (EVAL_STARTCOND_PPF) ...................................................... 41 5.1.12 Exit for Adding further data to workflow container (WF_CONT_MODIFY_PPF) ................................. 41 5.2
PPF Interface ................................................................................................................................... 42 5.2.1 Connection of Your Own Processing Options .......................................................................................... 42 5.2.2 Connection of a Logic for the Determination ........................................................................................... 42
Page 2
PPF
5.2.3 Connection to a Separate Logic for Action Merging ................................................................................ 42
6 Appendix ..................................................................................................................................... 44
6.1 6.2
Description of Interfaces ................................................................................................................ 44 6.1.1 CL_MANAGER_PPF............................................................................................................................... 44 Class Diagram ................................................................................................................................. 47 6.2.1 Customizing Classes ................................................................................................................................. 47 6.2.2 Runtime Classes ........................................................................................................................................ 48 6.2.3 Service Classes ......................................................................................................................................... 49 Sequence Diagrams ......................................................................................................................... 50 6.3.1 Calling the PPF ......................................................................................................................................... 50 6.3.2 Method DETERMINE Part 1 .................................................................................................................... 51 6.3.3 Method DETERMINE Part 2 .................................................................................................................... 52
6.3
Page 3
PPF
1 PPF Overview
The Post Processing Framework (PPF) is a tool for the generic execution of functions and processes. It provides the applications with a uniform interface to any actions. Actions can be outputs in the traditional sense such as print, fax, mail, or XML but functions such as the triggering of workflows or any method call can also be triggered. Which actions this eventually are, is determined by an individually configurable or a self-programmable determination technology, depending on the application document data. Execution of the action can also take place depending on the data of the application document.
Therefore, the PPF automatically generates actions from document data (for example, delivery notes or order confirmations, generation of an item in the document, creation of a subsequent document).
PPF additionally provides uniform action administration. There is status management and a processing log for every action.
The PPF itself was programmed with ABAP objects. In addition, various object services were used.
However, you do not have to program your PPF application in an object-oriented manner to use the PPF.
Overview graphic: Application Object Framework Scheduling Logic Merging Logic Actions Actions Actions Processing Logic Page 4
PPF
2 Preparation
2.1 Necessary Classes
Create the following classes in the Class Builder: ? ? ? ? ? ?
A persistent class (in the sense of Object Services) that represents the application object (for example: CL_BOOK_PPF)
A partner class that represents a partner of an application object (for example: CL_BOOK_PARTNER_PPF)
A context class that encapsulates all information for the PPF (Example: CL_DEMO_CONTEXT_PPF) A processing class provided Smart Forms are used (Example: CL_PROCESSING_DEMOBOOK_PPF) A BADI implementation provided the processing method call is used Workflow template provided a workflow is to be triggered
The implementation steps are explained using the example of a demo application. The demo application and all mentioned classes are available in all systems (transaction SPPFDEMO, development class SPPF_DEMO).
The classes to be implemented by the application are shaded in gray in the following graphics. All other classes are provided by the PPF.
2.1.1 Application Class
The PPF expects a persistent class so it can handle different types of application objects.
In most cases, the application object is not implemented as a persistent class, or it is a BOR object. You must then create a persistent proxy class that does nothing other than refer to the actual application object. The key of the application object also appears as an attribute of the proxy class. The application object implements the interface IF_LOCK_PPF and thus both methods for locking and unlocking the application object. These two methods are important so that an action does not operate on documents that are already locked. If the interface is not implemented, this can result in actions being executed twice under certain circumstances. Generally, the interface must be implemented.
When using the workflow conditions, a BOR object is necessary in addition to the persistent application object since the schedule condition and start condition is defined on attributes of the BOR object (more on this in the relevant sections).
The implementation of IF_LOCK_PPF is important so that the action does not change document data for a document that is being processed. The implementation also prevents the same action being executed multiple times in parallel processing.
Page 5
PPF
Effect:
Unlocks triggers of this action profile for processing Events:
DETERMINATION_DONE CHANGED REFRESHED GRID_CHANGED
Attribute:
LOCALE_UPDATE Boolean variable default = 'X'
The effect of the attribute is that actions that are to be processed when the document is saved are processed synchronously. If the flag is set to SPACE, processing takes place asynchronously using RFC.
Determination was performed Changes were performed Manager was reset
Changes in the interface were made
Page 46
PPF
6.2 Class Diagram
6.2.1 Customizing Classes
Logische AnsichtCL_TTYPE_CUST_PPFIF_DETERMINATION_PPF-NAME : PPFDTT-DESCRIPTION : PPFDTTT-CHANGEABLE : PPFDCHNG-MULTIPLE_ISSUING : PPFDMULTP-PARTNER_INDEP : PPFDNOPART-PARTNER_ROLE : PPFDPARTRL-DISPATCH_TIME : PPFDDSPTCH-DEACTIVATED : PPFDTTIACT-MEDIUM_COLL : CL_MEDIUM_CUST_COLL_PPF-DETERMINATION : IF_DETERMINATION_PPF-MERGE : IF_MERGE_PPF+GET_PARTNER_INDEP()+CONSTRUCTOR()+SET_DATA_FROM_DB()+GET_ALL_DATA()+SET_MEDIUM_COLL()+GET_MEDIUM_COLL()+GET_DISPATCH_TIME()+GET_DEFAULT_MEDIUM()CL_CONTEXT_DEF_PPF-NAME : PPFDCNTXT-DESCRIPTION : PPFDCNTXTT-CLASS : PPFDCLASS+GET_PERSISTENCY_TABLE()+DETERMINE()triggerTypeListIF_MERGE_PPFcontextList+GET_PERSISTENCY_TABLE()+MERGE()+MERGE_SINGLE()CL_APPL_CUST_PPFmediumListdefaultMedium-NAME : PPFDAPPL-DESCRIPTION : PPFDAPPLTCL_MEDIUM_GENERIC_CUST_PPF-CONFIG1 : PPFDGENFLD-CONFIG2 : PPFDGENFLD-CONFIG3 : PPFDGENFLD-PROCCLS : SEOCLSNAME-PROCMETH : SEOCMPNAMEIF_MEDIUM_CUST_PPFapplicationList+GET_PERSISTENCY_TABLE()+GET_MEDIUM()+GET_MEDIUM_TEMPLATE()CL_CUST_MANAGER_PPFCL_SF_PRINT_CUST_PPF-ARCHVMODE : SYARMOD-PRINTPARAM : PPFDPRTPRM-PROCCLS : SEOCLSNAME-PROCMETH : SEOCMPNAME-SMARTFORM : TDSFNAMECL_SF_FAX_CUST_PPF-ARCHVMODE : SYARMOD-PROCCLS : SEOCLSNAME-PROCMETH : SEOCMPNAME-SMARTFORM : TDSFNAMECL_SF_MAIL_CUST_PPF-PROCCLS : SEOCLSNAME-PROCMETH : SEOCMPNAME-SMARTFORM : TDSFNAME-UNIQUE_INSTANCE : ref to cl_ppf_customizing_manag+GET_INSTANCE() :+GET_MEDIUM() :+GET_TTYPE_CUST()+GET_TTYPE_COLL()+GET_MEDIUM_COLL()
Page 47
PPF
6.2.2 Runtime Classes
managerCL_MANAGER_PPF - singleton-CONTEXT_MANAGERS : CL_CONTEXT_MANAGER_COL+REPEAT_TRIGGER()+DELETE_TRIGGER()+CONSTRUCTOR()+GET_TTYPES()+GET_TRIGGERS()+CREATE_TRIGGER()+DETERMINE()+ADD_TRIGGER()+GET_INSTANCE()IF_MEDIUM_PPFLogische AnsichtCL_CONTEXT_MANAGER_PPF-CONTEXT : Ref To IF_CONTEXT_PPF-TTYPES : Ref To CL_TTYPE_COLL_PPF+GET_TRIGGERS(RO_TRIGGERS : CL_TRIGGER_COLL_PPF)+DELETE_TRIGGER(IO_TRIGGER : IO_TRIGGER)+CREATE_TRIGGER(IP_TTYPE : PPFDTT, RO_TRIGGER : CL_TRIGGER_PPF)+DETERMINE()+CONSTRUCTOR(II_CONTEXT : IF_CONTEXT_PPF)+GET_TTYPES(RO_TTYPES : CL_TTYPE_COLL_PPF)+ADD_TRIGGER(CO_TRIGGER : CL_TRIGGER_PPF)+REPEAT_TRIGGER(IO_TRIGGER : CL_TRIGGER_PPF, RO_TRIGGER : CL_TRIGGER_PPF)triggerTypeListcontextListCL_APPLICATIONprocessingprotocolCL_TTYPE_PPFnewTriggerListCL_PARTNER_PPF-PARTNNO : PPFDPARTNO-PARTNROLE : PPFDPARTRL-PARTNTEXT : PPFDPARTTX-PARTNTY : PPFDPARTTY-ZAVADDR : AD_ADDRNUM-ZAVPERS : AD_ADDRNUM-ZAVTYPE : PPFDADRTYP-ZAVCOMMNO : AD_CONSNUM-NAME : PPFDTT-DETERMINATION : IF_DETERMINATION_PPF-MERGE : IF_MERGE_PPF-NEW_TRIGGER_LIST : CL_TRIGGER_COLL_PPF-CURRENT_TRIGGER_LIST : CL_TRIGGER_COLL_PPF-MEDIUM_LIST : CL_MEDIUM_CUST_COLL_PPF-CONTEXT : IF_CONTEXT_PPF-TTYPE_CUSTOMIZING : CL_TTYPE_CUST_PPF+GET_TRIGGERS()+GET_TTYPE_CUSTOMIZING()+CHECK_TRIGGER()+CREATE_TRIGGER()+CONSTRUCTOR()+ADD_TRIGGER()+DETERMINE()+DELETE_TRIGGER()+REPEAT_TRIGGER()determinationprotocolCL_TRIGGER_PPFcurrentTriggerListMEDIUM_LISTCL_PROTOCOL_FIND_PPF-APPL : Object-APPLCTN : PPFDAPPL-APPLKEY : SYSUUID_C-CONTEXT : PPFDCNTXT-DISPATCH : PPFDDSPTCH-IS_CHANGED : PPFDTTCHNG-IS_INACTIV : PPFDIACT-IS_LOCKED : PPFDTLOCK-IS_REPEAT : PPFDTRPTCL_SF_PRINT_PPFCL_SF_FAX_PPFCL_SF_MAIL_PPFCL_MEDIUM_GENERIC_PPF-MEDIUM : IF_MEDIUM_PPF-STATUS : PPFDTSTAT-TIMECHANGE : PPFDTCHNGD-TIMECREATE : PPFDTCREAT-TTYPE : PPFDTT-USERCHANGE : PPFDUCHNGDcalls processing-USERCREATE : PPFDUCREATmethod of thisclasscalls processing+CREATE_TRIGGER_FROM_CUST()calls processingmethod of this+CREATE_TRIGGER_FROM_TEMPLATE()method of thisclass+CREATE_TRIGGER()class+DELETE_TRIGGER()+COPY()+EXECUTE()+REPEAT()+PREVIEW()inheritsCL_PROCESSING_DEMOBOOK_PPFCL_SF_PROCESSING_PPFfrom+CHECK()+MEDIUM_CHANGED()+COPY()+EXECUTE()+PREVIEW()+IS_EQUAL()+LANGUAGE_IS_EQUAL()+COMPLETE()+PARTNER_IS_EQUAL()+GET_PARTNER()+GET_PROCESSING_LOG()+SET_PARTNER()+GET_TYPE()CL_PROTOCOL_PROC_PPFIF_MEDIUM_CUST_PPF Page 48
PPF
6.2.3 Service Classes
The super class CL_CONTEXT_PPF encapsulates all necessary data for the actiondetermination. Any application using PPF has to define a class which inherits fromCL_CONTEXT_PPF and extends it with further attributes which can be used as sort fields forlater processing of the action. A reference to this class will be transmitted to the PPFframework in order to determine the appreciate actions.CL_CONTEXT_PPF+NAME : PPFDCNTXT+APPL : REF TO OBJECT+APPLCTN : PPFDAPPL+PARTNER : REF TO CL_PARTNER_COLL_PPFGET_VALUE_OF_ATTRIBUTECL_PARTNER_COLLbusiness documentpartnerIF_PARTNER_PPF+ADD_ELEMENT()+DELETE_ELEMENT()+GET_NEXT_ELEMENT()+GET_NUMBER_OF_ELEMENTS()+RESET_ITERATOR()+CLEAR()+CONTAINS()+GET_ZAV_ADDRESS()+GET_PARTNER()implementsCL_BOOK_PARTNER_PPF-PARTNER_NO : PPFDPARTNO-PARTNER_ROLE : PPFDPARTRL-PARTNER_TYPE : PPFDPARTTY-ZAV_ADDRESSNO : AD_ADDRNUM-ZAV_PERSNO : AD_ADDRNUM-ZAV_ADDR_TYPE : PPFDADRTYP-PARTNER_TEXT : TEXT60+IF_PARTNER_PPF~GET_ZAV_ADDRESS()+IF_PARTNER_PPF~GET_PARTNER()CL_DEMO_CONTEXT_PPF-NAME : PPFDCNTXT-APPL : REF TO OBJECT-APPLCTN : PPFDAPPL-PARTNER : REF CL_PARTNER_COLL_PPF-ID : CHAR10-PAGECOUNT : NUM4-STATUS : PPFDDSTAT-CREATOR : SYUNAME+GET_VALUE_OF_ATTRIBUTE() :REF TOthe PPF demo application for exampledefines the following context classREF TOCL_BOOK_PPF-ID : CHAR10+TITLE : TEXT60+AUTHOR : TEXT60-... :+IF_LOCK_PPF~ENQUEUE()+IF_LOCK_PPF~DEQUEUE()implementsIF_LOCK_PPF+ENQUEUE()+DEQUEUE()
Page 49
PPF
6.3 Sequence Diagrams
6.3.1 Calling the PPF
This sequence diagramdescribes the call of methodsand objects a user-definedprogram has to provide to useand start PPF.Classes andInterfaces of theObject Servicesuser-definedprogram?class?CL_OS_SYSTEMget_transaction_manager()/IF_OS_TRANSACTION_MANAGER/IF_OS_TRANSACTION:CL_MANAGER_PPF:IF_OS_TRANSACTION_MANAGERcreate_transaction():IF_OS_TRANSACTIONstart()start of transactionget_instance():CL_MANAGER_PPFget reference to persistent applicationobject, eg via get_persistent_*,create_persistent_*, etc. (name of heapplication class is needed probably)?create?Implementing classhas to be user-definedWhy is this object created bythe user? Could be providedas Singleton (or static class)and managed byIF_CONTEXT_PPF'application object'/IF_CONTEXT_PPF?create?:CL_PARTNER_COLL_PPFImplementing classhas to be user-defined[all partners] ?create? ( \/IF_PARTNER_PPFset up partners[all partners] append( :IF_PARTNER_PPF )\determine( :CL_MANAGER_PPF )determinationsee furthersequencediagramend()end of transactionCOMMIT WORK
Page 50
PPF
context->creator = sy-uname. ...
Determination is started. As a return value, the application receives a determination log that displays how many actions were found and why some actions were found. The determination log is not persistently stored by the PPF itself. It is always created dynamically at runtime.
* start PPF
CALL METHOD manager->determine EXPORTING io_context = context
IMPORTING ep_protocol = determination_protocol.
COMMIT WORK
The PPF uses the persistence services of Object Services. These services run after a COMMIT WORK, that is, a COMMIT WORK must take place at the end so that the generated actions can be written to the database.
Page 31
PPF
3.2 Processing Actions
There are three fundamental possibilities for processing: ? ? ? ?
Immediate processing With document posting Later, by a batch report
Manual triggering from the dialog
This processing time is defined in action type Customizing and can be overridden in the configuration of conditions.
3.2.1 Immediate Processing
The action is executed as soon as it is found. Execution takes place during document editing. This can make sense if you want an item in the document to be generated automatically, for example.
3.2.2 Processing with Document Posting
In this processing type, the actions are processed immediately after document processing, that is, after a COMMIT WORK. Processing is triggered implicitly by the PPF.
Example: After the order is booked, an order confirmation is immediately sent by mail.
3.2.3 Later Processing
In later processing, the application itself must trigger the processing of actions. This generally occurs using a selection report that selects the actions to be processed and triggers their processing. The PPF already offers such a report (RSPPFPROCESS or transaction SPPFP). The report can also be triggered in the background (without user interface).
Example: All faxes are to be sent at night in a batch run.
3.2.4 Manual Triggering of Processing in the Dialog
Actions can be generated here without the document already being posted. This processing type must be declared in Customizing as permitted.
Example: A letter of invitation should be printed during the maintenance of a contact.
Page 32
PPF
3.3 User Interface at Runtime
3.3.1 Standard User Interface
The PPF provides a standardized user interface to display the found and manually added actions. In
addition, you can of course create your own user interface for your application. The APIs provide all functions that are needed for this. The necessary function modules and subscreens are available in the function group SPPF_VIEW_CRM. The standard UI is highly configurable, you can exactly determine which columns and functions are to be displayed.
Standard user interface as a subscreen:
The user interface displays the existing actions and their status for a document. Newly found actions are also displayed. A determination log documents in detail which actions have been found this time.
Page 33
PPF
Example of a determination log:
Additional functions:
Actions can be added manually
There is a processing log for every processed action The processing can be repeated (if allowed)
Page 34
PPF
Unprocessed actions can be deleted (if allowed) Unprocessed actions can be processed (if allowed)
Settings can be overridden (printer, e-mail address, fax number, processing time, action processing, and so on)
A describing text of the action can be displayed Scheduling of actions from a generated worklist
3.3.2 Connection of Generic Object Services (GOS)
Using this service, actions can also be provided from the worklist for scheduling from here.
Action service A BOR object is needed to connect the GOS toolbar with the action service. The BOR object must implement the BOR Interface IFGOSPPF (see TA SWO1). The interface defines 2 methods that are needed: GET_MODE read mode (change or display mode) GET_CONTEXTS read action profile
The service is contacted in Generic Object Services using the name PPFACTION. This name must be transferred for the toolbar constructor. For more information on the Generic Object Services, read the corresponding online documentation.
Page 35
PPF
3.4 Transaction Concept
3.4.1 Overview
Transactions ensure that a certain number of editing steps are either completely executed or not executed at all. When the transaction ends, the transaction is either ended regularly and all data is written to the database or the transaction is rolled back and none of the changes made reach the database.
The PPF essentially supports the transaction concept of the object services. For more documentation on this, see Object Services. The object services do not support any parallel transactions, that is, two objects (documents) cannot be edited in parallel, one is to be canceled and the other is to be saved. This is not covered by the transaction model of object services. Since CRM really needs such a transactions concept, an extension of the existing transaction model, the Object Pool, was implemented in cooperation with the object services.
3.4.2 Object Pool
The Object Pool enables the parallel editing of documents. Here, the Object Pool is always notified which document is currently active. Only one document can be edited for each session. Individual documents can be selected for either saving or canceling (roll back of changes) after editing.
Object Pool methods
SET_GUID (sets the GUID of the document that is currently edited)
All persistent objects that are generated, loaded, or changed from this time on, logically belong to the transaction with the set document GUID. They can later be saved using save_guids or reset using reset_guids.
SAVE_GUIDS (transfers the GUIDs of the document that are provided for saving) All objects that belong to the transferred GUIDs are written to the database.
RESET_GUIDS (transfers the GUIDs of the document that are provided for canceling) All objects that belong to the transferred GUIDs are rejected.
The following example shows how a call of the object pool can appear. First a document 1 is generated. Here, the GUID of this document is used to start a transaction using set_guid. All persistent objects (in the sense of Object Services) that are created from here on are linked to this transaction and can later be saved or rejected. A document 2 can now be created in this mode. During its editing this document GUID must now be set. Like before, all of the objects created are linked to the transaction with this GUID. After the document is edited, the first document is saved here and the second document and the objects (actions) created are rejected.
Page 36
PPF
timecreateCRM business document 1GUID: ABCsetGUID( 'ABC' )CL_OBJECT_POOLdetermineCL_MANAGER_PPFcreateCRM business document 2GUID: DEFsetGUID( 'DEF' )CL_OBJECT_POOLdetermineCL_MANAGER_PPFresetGUID( 'ABC' )CL_OBJECT_POOLsaveGUID( 'ABC' )CL_OBJECT_POOL
Page 37
PPF
4 Administration User Interface
Transaction SPPFCADM provides a practical entry point for cross-application administration of PPF.
All applications are displayed and there are links to the action definition, the condition configuration, and the Wizard. You can also correct possible inconsistencies.
Page 38
PPF
5 Extendibility
5.1 Business Application Add Ins (BAdIs)
The PPF provides various BADIs that permit manipulation at defined times. There are currently 12 BADIs:
5.1.1 Exit for the printer determination (PRINTER_DETERM_PPF)
FLT_VAL Importing Type
PPFDTT
PPF: Name of a trigger type IO_CONTEXT Importing Type Ref To CL_CONTEXT_PPF PPF: Action profile class CP_PRINTER_DATA
Changing Type
PPFSPRINT
PPF: Spool data
The printer is generally returned by the determination with the template for the action. The determination returns an action template with action processing. A printer can be entered in action processing.
It is often the case that a specific printer is to be used due to the application data. In this way, for example, the printer can be determined depending on the sales organization. At definition time of the action template, the sales organization is naturally unknown. For this reason, the following BADI is called provided the template or the determination does not return a printer.
The BADI has the name of the action type as a filter value. As a further import parameter the implementing class has a reference to the actions profile object and thus access to all document data. A printer can now be found and returned using the document data.
Example implementation: PRINTER_DET_SUSR_PPF (transaction SE19)
The example implementation reads the master data of the current user and returns the printer maintained there.
5.1.2 Exit After Generated Action (TRIGGER_EXECUTED)
FLT_VAL Importing Type
PPFDAPPL
PPF: Application IO_TRIGGER
Importing Type Ref To CL_TRIGGER_PPF
PPF: Trigger reference
This BADI is called after the action is completed, that is, after the action is processed. As a result, the action can perform subsequent actions. If processing is incorrect (that is, there were errors with the processing of the action) a routine or transaction can be executed for error handling, for example.
The BADI has the application names as the filter value. The action is also transferred and can deliver its processing status (successful, with error) or other information.
Take care of the performance. An implementation of this BadI will be called after the execution of any action within the application, as the application serves as filter value here. A better option might be to listen to the executed event of CL_TRIGGER_PPF.
5.1.3 Exit for Context Extension (CONTEXT_EXTEND_PPF)
FLT_VAL Importing Type
PPFDTT
PPF: Name of trigger type IO_CONTEXT
Importing Type Ref To CL_CONTEXT_PPF PPF: Action profile class RO_EXTENDED_CONTEXT
Returning Type Ref To CL_CONTEXT_PPF
PPF: Extended action profile
The BADI is used for potential extensions of the action profile class by the customers. If the attributes
defined in the action profile of the application are not sufficient for the customer’s determination, then he or she can extend the application using action profile class using inheritance. The additional attributes must be
Page 39
PPF
provided with values. This BADI is used for this. The implementations are created for each trigger type. The application should deliver example implementations.
5.1.4 Exit for Completion of Processing Options (COMPLETE_PROC_PPF)
FLT_VAL IO_CONTEXT Importing Type Importing Type PPFSCONACT CL_CONTEXT_PPF PPF: Name of trigger type PPF: Context Super ClassSmart IP_PROTOCOL Importing Type BALLOGHNDL Application Log: Log Handle IP_NO_PROTOCOL Importing Type
BOOLE_D
Do Not Write a Log IO_MEDIUM
Importing Type Ref To Procesing Object
Reference to corresponding Processing
The BAdI is called after the action determination has taken place and before the created action is checked. Here additional data might be set for the processing of the action. The following methods are available depending on the type of processing:
? COMPLETE_MAIL Completes Mail Processing ? COMPLETE_FAX
Completes Fax Processing ? COMPLETE_PRINT Completes Print Processing ? COMPLETE_METHOD
Completes BADI Processing ? COMPLETE_WORKFLOW Completes Workflow Processing ? COMPLETE_SEND Completes Transmission Processing ?
COMPLETE_ALERT
Completes Alert Processing
The interface of the methods is always the same as above described.
5.1.5 Extend Container for Condition Evaluation (CONTAINER_PPF)
FLT_VAL Importing Type
OJ_NAME
Name of business object CI_CONTAINER Changing Type Ref To IF_SWJ_PPF_CONTAINER Container with BOR object CI_PARAMETER
Changing Type Ref To IF_SWJ_PPF_CONTAINER
Parameter container
The BAdI is called whenever a condition for the given BOR object type has to be evaluated. The
CI_CONTAINER contains the BOR object and the CI_PARAMETER the uses parameters. Additional objects or parameters might be added to the container for condition evaluation.
An implementation will only work for buiness object repository (BOR) objects and not for class objects. As the filter is only the business object type, the BAdI will be called whenever this object type is used in a workflow condition. This BAdI should be only used after consulting PPF development.
5.1.6 Exit for Execution of Actions (EXEC_METHODCALL_PPF)
FLT_VAL
Importing Type
OJ_NAME
Name of business object IO_APPL_OBJECT Importing Type Ref To OBJECT
Reference to Application Object IO_PARTNER
Importing Type Ref To CL_PARTNER_PPF Message Partner IP_APPLICATION_LOG Importing Type BALLOGHNDL Processing Protocol IP_PREVIEW Importing Type
CHAR1
Preview Mode
II_CONTAINER Importing Type Ref To I F_SWJ_PPF_CONTAINER Processing Parameters IP_ACTION Importing Type PPFDTT Name of Action Definition RP_STATUS
Returning Type
PPFDSTAT
Processing Status
Page 40
PPF
The BAdI is a standard exit for enhancing business logic with dynamic processing. Via the implementation PPF can trigger arbitrary business logic. After implementing the BAdI can be assigned in PPF customizing as methodcall processing. Internal development is encouraged to use this processing type for generic processing. Customers may also use this feature for customer specific processing.
5.1.7 Exit for Getting Possible Partner Functions of an Application
(GET_PARTN_ROLES_PPF ) 5.1.8 Exit for Double Clicking on Values in the Display (GRID_CLICK_PPF) 5.1.9 Exit for Checking if Deletion of Action Profile is allowed
(CONTEXT_DELETE_PPF)
5.1.10 Exit for evaluation of schedule conditions (EVAL_SCHEDCOND_PPF) 5.1.11 Exit for evaluation of start conditions (EVAL_STARTCOND_PPF)
5.1.12 Exit for Adding further data to workflow container (WF_CONT_MODIFY_PPF)
Page 41
PPF
5.2 PPF Interface
The PPF provides three interfaces in three places that allow any extension:
5.2.1 Connection of Your Own Processing Options
The PPF provides standard processing options. This is currently Smart Forms Print, Smart Forms Fax, Smart Forms Mail, and generic action processing. In the future, even more processing options like XML or workflow will be supported.
If this is not sufficient to you, you can add your own action media at any time using the action media
provided. By implementing the interfaces you automatically integrate the processing options without the need for coding changes inside the PPF.
Further information on this topic is available on request.
5.2.2 Connection of a Logic for the Determination
If the standard determination technologies are insufficient or if any specific determination technologies are necessary, your own determinations can be connected using the IF_DETERMINATION_PPF interface. The new determination class implements the interface and the methods of the interface. Thus the new
determination is integrated in the framework and can be used. You can select it using the possible entries in the Customizing of the action definition. ?
GET_PERSISTENCY_TABLE
Delivers the table in which persistent data for the determination object is to be stored. The information is needed for the creation of the transport request in Customizing. ?
DETERMINE
IO_CONTEXT Importing Type Ref To CL_CONTEXT_PPF Action profile class IP_TTYPE Importing Type PPFDTT Action type IP_DETLOG
Importing Type
BALLOGHNDL
Log handle
RO_TRIGGER_TEMPL_COLL Returning Type Ref To CL_TRIGGER_TEMPL_COLL_PPF
Collection of output templates
The actual determination method receives a reference to an actions profile object as the import parameter, the action type, and a handle to a determination log that the condition is to fill. Using this information, the determination returns one or multiple action templates.
5.2.3 Connection to a Separate Logic for Action Merging
Many different logics are also conceivable for the merging of existing and newly found actions. We offer various standard logics. A self-defined logic is very easy to integrate. You must create a class for this that implements the interface IF_MERGE_PPF. As a template, you can view the following classes: ? CL_MERGE_MAX1_FOR_TYPE_PPF max. 1 unprocessed action for each action definition ? CL_MERGE_MAX1_PPF
max. 1 unprocessed action
Interface methods: ?
GET_PERSISTENCY_TABLE
Delivers a table in which the persistent data is stored for the determination object. The information is necessary for the merging of the transport request in Customizing. ?
MERGE
Page 42
PPF
The merge method is called after determination to merge newly found actions with possible existing actions using determination.
IO_NEW_TRIGGER_COLL Importing IO_OLD_TRIGGER_COLL IP_DETLOG
RO_TRIGGER_COLL
Importing Importing Returning
Type Ref To Type Ref To Type Type Ref To
CL_TRIGGER_COLL_PPF CL_TRIGGER_COLL_PPF BALLOGHNDL
CL_TRIGGER_COLL_PPF
Newly found actions Existing actions Log handle Merged actions
?
MERGE_SINGLE
The method MERGE_SINGLE is called after the manual generation of an action (see User Interface section) to merge this with possible existing actions.
IO_NEW_TRIGGER IO_OLD_TRIGGER_COLL RO_TRIGGER_COLL
Importing Importing Returning
Type Ref To Type Ref To Type Ref To
CL_TRIGGER_PPF CL_TRIGGER_COLL_PPF CL_TRIGGER_COLL_PPF
New action Existing actions Mixed proposals
Page 43
PPF
6 Appendix
6.1 Description of Interfaces
6.1.1 CL_MANAGER_PPF
The class CL_MANAGER_PPF serves as a central interface (API) for PPF. The following methods (services) are offered: ?
GET_INSTANCE (Static Method) Parameter: None
Effect: Delivers an instance of the class (singleton) ?
ADD_TRIGGER (Instance Method) Parameter: IO_CONTEXT Effect:
Adds a new action for the action profile supplied ?
REPEAT_TRIGGER (Instance Method) Parameter: IO_CONTEXT IO_TRIGGER RO_TRIGGER Effect:
Repeats processing of the action transferred ?
DELETE_TRIGGER (Instance Method) Parameter:
IO_CONTEXT Importing IO_TRIGGER Importing Effect:
Deletes the unprocessed action transferred ?
DELETE_ALL_TRIGGERS (Instance Method) Parameter:
IO_CONTEXT Importing IO_FORCE Effect:
Deletes the actions of the transferred action profile. The method should be called when the document is called. ?
GET_TTYPES (Instance Method) Parameter:
IO_CONTEXT Importing RO_TTYPES Returning
Type Ref To CL_CONTEXT_PPF Type Ref To CL_TTYPE_COLL_PPF
Action profile
Action types of the action profile
Importing
Type Ref To CL_CONTEXT_PPF Type
BOOLE_D
Action profile Without checks
Type Ref To CL_CONTEXT_PPF Type Ref To CL_TRIGGER_PPF
Action profile Action
Importing Type Ref To CL_CONTEXT_PPF Importing Type Ref To CL_TRIGGER_PPF Returning Type Ref To CL_TRIGGER_PPF
Action profile Action to be repeated Repeated action
Importing
Type Ref To CL_CONTEXT_PPF Type Ref To CL_TRIGGER_PPF
Action profile Action
CO_TRIGGER Changing
Page 44
PPF
Effect:
Delivers the action types for the action profile transferred ?
GET_TRIGGERS (Instance Method) Parameter: IO_CONTEXT Effect:
Delivers all possible actions for the action profile ?
CREATE_TRIGGER (Instance Method) Parameter:
IP_TTYPE_NAME Importing IO_CONTEXT RO_TRIGGER Effect:
Generates an action of the transferred type for this action profile ?
DETERMINE (Instance Method) Parameter: IO_CONTEXT Effect:
Starts the determination for the action profile transferred and returns the determination log ?
SET_APPLKEY (Instance Method) Parameter: IP_APPLKEY IO_CONTEXT Effect:
Sets the field APPLKEY in all actions of the action profile with which the system can later search and sort by ?
REFRESH (Instance Method) Parameter: None
Effect: All data of the PPF manager is lost
Resets the PPF manager, allocated memory is released ?
LOCK_TRIGGERS (Instance Method) Parameter: IO_CONTEXT Effect:
Locks the triggers of this action profile for processing, recommended for incomplete documents ?
UNLOCK_TRIGGERS (Instance Method) Parameter: IO_CONTEXT
Importing
Type Ref To CL_CONTEXT_PPF
Action profile
Importing
Type Ref To CL_CONTEXT_PPF
Action profile
Importing Importing
Type
PPFDAPPKEY
Application key Action profile
Type Ref To CL_CONTEXT_PPF
Importing
Type Ref To CL_CONTEXT_PPF Type
BALLOGHNDL
Action profile Determination log
EP_PROTOCOL Exporting
Importing Returning
Type
PPFDTT
Action definition Action profile Action
Type Ref To CL_CONTEXT_PPF Type Ref To CL_TRIGGER_PPF
Importing
Type Ref To CL_CONTEXT_PPF
Action profile
RO_TRIGGERS Returning
Type Ref To CL_TRIGGER_COLL_PPF Actions for action profile
Page 45
PPF
2.3.1.2 PPF Determination Technology (Determination Using Conditions)
This condition logic should not be used any more. Use either the workflow conditions or for special scenarios the BadI conditions.
The determination technology developed by the PPF looks as follows:
Conditions for the action definition
Action profile and action definitions
Definition of the condition as ABAP Coding
Result, if the condition is fulfilled
The action profile of the application and the relevant action definitions are displayed in the top left-hand
screen area above. The conditions that were assigned to the action definitions appear right of this in the list. The overview displays a number, the description of the condition, the assigned action (here: 2 expressions), the stop flag, and a check symbol that displays whether the condition definition is consistent. The stop flag means that once the condition has been met, further conditions are ignored.
There are 2 types of conditions: Conditions with an action and process conditions. Conditions with an action are always assigned one action as a result. The process conditions do not have action templates. They have a controlling character. The other conditions are only evaluated if the process condition returns FALSE as the return value.
An action template (bottom right) can be assigned multiple processing options. If an invoice is to be sent by post, for example and also printed out, simply assign the mail and fax as the processing here and perform
Page 26
PPF
the corresponding settings. If the condition is fulfilled, an action template with 2 processing options is returned. The runtime system creates 2 separate actions from this.
The current conditions are created by an administrator in the production system since they are generally based on application data that is only known in the productive system. A transport of conditions and thus a preconfiguration provided by SAP is not possible with this tool.
Page 27
PPF
2.3.2 Action Merging
Merging is always necessary if existing, unprocessed actions have to be mixed with newly found actions. This is the case, for example, if an existing document is changed. Since all data has changed, actions, that were found when creating the document can be omitted, or new ones can be found. A new logic is required for the merging of new and old actions.
The PPF currently provides three standard logics. 2.3.2.1 One unprocessed action only
This logic only permits one unprocessed action for each action type. The first unprocessed action remains and all other actions are deleted. If the action is processed and another unprocessed action is found, then this one remains.
2.3.2.2 One unprocessed action only per processing type
This logic only permits one unprocessed action for each processing type, that is one print, fax, or mail action. Therefore, there can be multiple actions, but only one per processing type. The first unprocessed action of the processing type remains, all further actions are deleted. 2.3.2.3 Only one action
This logic only permits one action for each action type. The first action remains, all further actions are deleted.
2.3.2.4 Configurable action merging
This logic can be configured using a separate user interface. It can be set whether altogether one unprocessed action may be produced or whether one unprocessed action may be produced for each processing type.
In addition, the number of unprocessed actions can be restricted. For example, as shown here, you can set that an action may only be successfully executed three times. Afterwards, the action is no longer scheduled.
Page 28
PPF
3 Interaction Between Application and PPF at Runtime
3.1 Calling the PPF
The following displays all the necessary steps for starting the PPF. The preliminary steps (see section 2) must be completed.
We again use the demo application from the application class SPPF_DEMO (TA SPPFDEMO). What has to be done?
1. Data declarations
DATA:
* reference to application/proxy object appl_object TYPE REF TO cl_book_ppf, * reference to context object
context TYPE REF TO cl_demo_context_ppf, * reference to partner object
partner TYPE REF TO cl_book_partner_ppf, * reference to partner collection
partner_coll TYPE REF TO cl_partner_coll_ppf,
”PPF defined class
”application defined class
”application defined class
”application defined class
* reference to PPF manager (interface to PPF services) manager TYPE REF TO cl_manager_ppf, * determination protocol
determination_protocol TYPE balloghndl book_id TYPE CHAR10.
”PPF defined class
Get an instance of class CL_MANAGER_PPF. This class displays the interface for PPF. All service methods are called by it.
* get an instance of PPF manager
manager = cl_manager_ppf=>get_instance( ).
Generate the application object and set the key fields so that the application object can be found or
generated again. If the application object is a BOR object then its ID is set here. In our case, we set the key fields of table PPFTBOOK so as to be able to access the entry later.
* create application object
CLASS ca_book_ppf DEFINITION LOAD.
appl_object ?=
ca_book_ppf=>agent->if_os_factory~create_persistent_by_key( i_key = book_id ).
Generate an object of the action profile class
* create context object CREATE OBJECT context.
Page 29
PPF
Generate a partner collection that can include several partner objects. The partner collection represents the document partner
* create partner collection CREATE OBJECT partner_coll.
Generate a partner object and append it to the collection. You perform this step for every document partner.
* create first partner object CREATE OBJECT partner
EXPORTING ip_partner_role = 'LF'
ip_partner_no = '1234567890' ip_partner_text = 'Lieferant Meier' ip_zav_addressno = '0000015762' ip_zav_persno = '0000015763' ip_zav_addr_type = '3'.
* append partner to partner collection
CALL METHOD partner_coll->add_element( partner ).
* create another partner object CREATE OBJECT partner
EXPORTING ip_partner_role = 'WE'
ip_partner_no = '0987654321'
ip_partner_text = 'Ship-to party Smith' ip_zav_addressno = '0000015762' ip_zav_persno = '0000015763' ip_zav_addr_type = '3'.
* append partner to partner collection
CALL METHOD partner_coll->add_element( partner ).
The action profile object that encapsulates all information for the PPF. The name of the application and the action profile that were defined in Customizing are transferred. The reference to the application is transferred and also the partner collection. In addition, the application-specific fields are set for the action profile that are relevant for determination. Conditions for an action are defined in these fields.
* set context attribute context->applctn = 'BOOK'. context->name = 'BOOK'. context->appl = appl_object. context->partner = partner_coll.
* additional context fields context->ID = ‘1234’.
Page 30
- 1VxWorks kernal programmers guide
- 2NetBackup_Troubleshoot_Guide
- 3SPI_Layout_Guide_AN
- 4The Why and Why not of User Participation in IOS Development
- 5The Brief Description about Landscape’s Development
- 62009 Medical Imaging Guide
- 7MongoDB_Architecture_Guide
- 8Contributions, Costs and Prospects for End-User Development
- 9The Why and Why not of User Participation in IOS Development
- 10english_Economic Development Zone in China
- 乘务员考试
- BBC纪录片目录
- 2018年部编人教版小学二年级语文上册单元测试卷全册(含参考答案) - 图文
- 5、5e、6类局域网络线产品性能、产品设计及工艺关系 - 图文
- 医院排班各班工作职责
- 东北师范大学2010年秋季文学概论模拟试题
- “彩云杯”中华优秀传统文化知识竞赛题库
- 预防化工设备故障的发生—张永权
- 信号基础
- 教师微型课题研究指南
- 交通运输领域温室气体减排与控制技术
- JSP期末考试题
- 奥瑞金电气施组
- 桥梁施工复习题
- 大中专毕业生初次认定专业技术资格条件
- I2C时序与SLE4442传送协议区别
- ComputerEnglishTest
- 09高院民事审判工作座谈会会议纪要
- 工商行政管理机关行政处罚程序授课资料
- A320-CFM56-5B-VBV系统维护总结