Sap abap- perform using....changing....
1. can u explain me about ' perform....using...changing....'
subroutine and how to work with it.
2. how to declare constants (global declarations).
Hi,
You can declare global constants as below :
constants : gc_bukrs like bsis-bukrs value '1000'.
Find below docu for perform.
PERFORM form(prog).
Extras:
1. ... TABLES itab1 itab2 ...
2. ... USING u1 u2 u3 ...
3. ... CHANGING c1 c2 c3 ...
4. ... IF FOUND
This variant is not allowed in an ABAP Objects context.See PERFORM form(prog) not allowed.
Effect
Calls the subroutine form defined in program prog ("external PERFORM").
Notes
You pass parameters to the external subroutine as described in variant 1.
However, you can also do it using a shared data area (DATA BEGIN OF COMMON PART).
Please consult Data Area and Modularization Unit Organization documentation as well.
You can use nested calls, including several different subroutines in different programs.
When you call a subroutine that belongs to a program prog, prog is loaded into the PXA buffer (if it has not been loaded already). To minimize the possibility of memory problems, try not to use too many external subroutines from a large number of different programs.
Addition 1
... TABLES itab1 itab2 ...
Effect
See variant 1, addition 1.
Addition 2
... USING u1 u2 u3 ...
Effect
See variant 1, addition 2.
Addition 3
... CHANGING c1 c2 c3 ...
Effect
See variant 1, addition 3.
Addition 4
... IF FOUND
Effect
The specified subroutine is only called if the subroutine and its main program exist. Otherwise, the statement is ignored.
Notes
If the program exists but not the subroutine, the program itself is still loaded.
If the specified program contains errors, a runtime error occurs.
You can only find out if the subroutine exists by programming a check yourself (for example, by setting a flag that you pass to it).
Thanks,
SRiram Ponna.
Similar Messages
-
In which case we require to write perform using/changing
hi,
in which case we require to write perform using/changing .
and what is excatly we r doing with perform using.changing.
please somebody help me.
thanks
subhasisThis is an awfully basic question.
Simply press F1 on PERFORM.
And responders take note:
bapi
Rob -
SAP / ABAP Query - using logical database
Hi ,
We have a mandate to implement SAP Query using only Logical Databases (LDB ) .
We understand that there are several issues using this approach .
1 ) Paralled tables in MM need to be displayed on separate lines .
2 ) Statistics based on fields from 2 different tables cannot be produced eg: EKPO ( PO Number ) and EKKN . (Cost Center )
Please share your experiences .
Thank you in advance .
Kishore
KishoreAdeel,
I do appreciate your experience and respect you for knowledge on SAP Query.
Joining tables seem simple to IT experts but not so for end users. SAP Query is an end-user tool and users seem to need a simple user-friend, drag-and-drop solution to extract information using SAP Query based on a pre-defined infoset. Various SAP conferences have been advocating the use of SAP delivered Logical Databses to create infosets in order to harness the various advantages of LDBs.
In MM there are several LDBs (e.g. ELM, EBM etc) to create queries on EKPO and EKKN. The problem arises when you use the same LDB to extract information from more than the above two tables e.g. EKPO, EKET, EKKN and EKBE. SAP expects you to display fields on multiple lines and also does not allow producing statistics based on fields from two parallel tables say EKKN and EKBE. Moreover, multi-line reports cannot be produced in the ALV/SLV format.
We are also looking for best practise solutions in providing SAP Query to MM or FI users based on SAP delivered Logical Databases.
Pascal -
Perform some changes on standard SAP webdynpro for ABAP application
Hi,
We do need to perform some changes (new buttons, new tabs, adding new code etc) on a standard SAP product developed on Webdynpro for ABAP.
Which is the best approach to do so? I have reading about enhancement framework and it seems to be right solution to do so. Am I correct?
Any best practice to acomplish our target is very welcome.
Looking forward to hearing from you.
Kind regards,
ImanolYou are on right track thinking about enhancement framework.
My approach is would be in the following order.
Personalization/customization
Enhancement
Modification -
What is LUW? How do we use it in SAP ABAP coding?
Hi Friends,
Kindly explain me what is LUW with examples and how do we use it in our ABAP coding with scenarios why and when we use it?
Regards,
PradeepHi,
SAP LUW
Die Verbuchungsverwaltung
The Open SQL statements INSERT, UPDATE, MODIFY, and DELETE allow you to program database changes that extend over several dialog steps. Even if you have not explicitly programmed a database commit, the implicit database commit that occurs after a screen has been processed concludes the database LUW. The following diagram shows the individual database LUWs in a typical screen sequence:
Under this procedure, you cannot roll back the database changes from previous dialog steps. It is therefore only suitable for programs in which there is no logical relationship between the individual dialog steps.
However, the database changes in individual dialog steps normally depend on those in other dialog steps, and must therefore all be executed or rolled back together. These dependent database changes form logical units, and can be grouped into a single database LUW using the bundling techniques listed below.
A logical unit consisting of dialog steps, whose changes are written to the database in a single database LUW is called an SAP LUW. Unlike a database LUW, an SAP LUW can span several dialog steps, and be executed using a series of different work processes. If an SAP LUW contains database changes, you should either write all of them or none at all to the database. To ensure that this happens, you must include a database commit when your transaction has ended successfully, and a database rollback in case the program detects an error. However, since database changes from a database LUW cannot be reversed in a subsequent database LUW, you must make all of the database changes for the SAP LUW in a single database LUW. To maintain data integrity, you must bundle all of you database changes in the final database LUW of the SAP LUW. The following diagram illustrates this principle:
Database Logical Unit of Work (LUW)
From the point of view of database programming, a database LUW is an inseparable sequence of database operations that ends with a database commit. The database LUW is either fully executed by the database system or not at all. Once a database LUW has been successfully executed, the database will be in a consistent state. If an error occurs within a database LUW, all of the database changes since the beginning of the database LUW are reversed. This leaves the database in the state it was in before the transaction started.
The database changes that occur within a database LUW are not actually written to the database until after the database commit. Until this happens, you can use a database rollback to reverse the changes. In the R/3 System, database commits and rollbacks can be triggered either implicitly or using explicit commands.
Implicit Database Commits in the R/3 System
A work process can only execute a single database LUW. The consequence of this is that a work process must always end a database LUW when it finishes its work for a user or an external call. Work processes trigger an implicit database commit in the following situations:
When a dialog step is completed
Control changes from the work process back to the SAP GUI.
When a function module is called in another work process (RFC).
Control passes to the other work process.
When the called function module (RFC) in the other work process ends.
Control returns to the calling work process.
When a WAIT statement interrupts the work process.
Control passes to another work process.
Error dialogs (information, warning, or error messages) in dialog steps.
Control passes from the work process to the SAP GUI.
Explicit Database Commits in the R/3 System
There are two ways to trigger an explicit database commit in your application programs:
Call the function module DB_COMMIT
The sole task of this function module is to start a database commit.
Use the ABAP statement COMMIT WORK
This statement starts a database commit, but also performs other tasks (refer to the keyword documentation for COMMIT WORK).
Implicit Database Rollbacks in the R/3 System
The following cases lead to an implicit database rollback:
Runtime error in an application program
This occurs whenever an application program has to terminate because of an unforeseen situation (for example, trying to divide by zero).
Termination message
Termination messages are generated using the ABAP statement MESSAGE with the message type A or X. In certain cases (updates), they are also generated with message types I, W, and E. These messages end the current application program.
Explicit Database Rollbacks in the R/3 System
You can trigger a database rollback explicitly using the ABAP statement ROLLBACK WORK. This statement starts a database rollback, but also performs other tasks (refer to the keyword documentation for COMMIT WORK).
From the above, we can draw up the following list of points at which database LUWs begin and end.
A Database LUW Begins
Each time a dialog step starts (when the dialog step is sent to the work process).
Whenever the previous database LUW ends in a database commit.
Whenever the previous database LUW ends in a database rollback.
A Database LUW Ends
Each time a database commit occurs. This writes all of the changes to the database.
Each time a database rollback occurs. This reverses all of the changes made during the LUW.
Database LUWs and Database Locks
As well as the database changes made within it, a database LUW also consists of database locks. The database system uses locks to ensure that two or more users cannot change the same data simultaneously, since this could lead to inconsistent data being written to the database. A database lock can only be active for the duration of a database LUW. They are automatically released when the database LUW ends. In order to program SAP LUWs, we need a lock mechanism within the R/3 System that allows us to create locks with a longer lifetime (refer to The R/3 Locking Concept).
The bundling technique for database changes within an SAP LUW ensures that you can still reverse them. It also means that you can distribute a transaction across more than one work process, and even across more than one R/3 System. The possibilities for bundling database changes within an SAP LUW are listed below:
The simplest form of bundling would be to process a whole application within a single dialog step. Here, the system checks the users input and updates the database without a database commit occurring within the dialog step itself. Of course, this is not suitable for complex business processes. Instead, the R/3 Basis system contains the following bundling techniques.
Bundling using Function Modules for Updates
If you call a function module using the CALL FUNCTION... IN UPDATE TASK statement, the function module is flagged for execution using a special update work process. This means that you can write the Open SQL statements for the database changes in the function module instead of in your program, and call the function module at the point in the program where you would otherwise have included the statements. When you call a function module using the IN UPDATE TASK addition, it and its interface parameters are stored as a log entry in a special database table called VBLOG.
The function module is executed using an update work process when the program reaches the COMMIT WORK statement. After the COMMIT WORK statement, the dialog work process is free to receive further user input. The dialog part of the transaction finishes with the COMMIT WORK statement. The update part of the SAP LUW then begins, and this is the responsibility of the update work process. The SAP LUW is complete once the update process has committed or rolled back all of the database changes.
For further information about how to create function modules for use in update, refer to Creating Function Modules for Database Updates
During the update, errors only occur in exceptional cases, since the system checks for all logical errors, such as incorrect entries, in the dialog phase of the SAP LUW. If a logical error occurs, the program can terminate the update using the ROLLBACK WORK statement. Then, the function modules are not called, and the log entry is deleted from table VBLOG. Errors during the update itself are usually technical, for example, memory shortage. If a technical error occurs, the update work process triggers a database rollback, and places the log entry back into VBLOG. It then sends a mail to the user whose dialog originally generated the VBLOG entry with details of the termination. These errors must be corrected by the system administrator. After this, the returned VBLOG entries can be processed again.
For further information about update administration, see Update Administration
This technique of bundling database changes in the last database LUW of the SAP LUW allows you to update the database asynchronously, reducing the response times in the dialog work process. You can, for example, decouple the update entirely from the dialog work process and use a central update work process on a remote database server.
Bundling Using Subroutines
The statement PERFORM ON COMMIT calls a subroutine in the dialog work process. However, it is not executed until the system reaches the next COMMIT WORK statement. Here, as well, the ABAP statement COMMIT WORK defines the end of the SAP LUW, since all statements in a subroutine called with PERFORM ON COMMIT that make database changes are executed in the database LUW of the corresponding dialog step.
The advantage of this bundling technique against CALL FUNCTION... IN UPDATE TASK is better performance, since the update data does not have to be written into an extra table. The disadvantage, however, is that you cannot pass parameters in a PERFORM... ON COMMIT statement. Data is passed using global variables and ABAP memory. There is a considerable danger of data inconsistency when you use this method to pass data.
Bundling Using Function Modules in Other R/3 Systems
Function modules that you call using CALL FUNCTION... IN BACKGROUND TASK DESTINATION... are registered for background execution in another R/3 System when the program reaches the next COMMIT WORK statement (using Remote Function Call). After the COMMIT WORK, the dialog process does not wait for these function modules to be executed (asynchronous update). All of the function modules that you register in this way are executed together in a single database LUW. These updates are useful, for example, when you need to maintain identical data in more than one database.
For further details, refer to the keyword documentation.
For more details of RFC processing, refer to the Remote Communications section of the Basis Services documentation.
Pls. reward if useful.... -
Retrieving hierarchy fields from MDM to SAP R/3 using MDM ABAP API's
Hi all,
I have developed a code to retrieve fields from MDM to SAP R/3 using MDM ABAP API's, i could retrieve all of the fields excluding the Lookup[Hierarchy] fields like- FACILITY CODE etc...
please update me if anyone has any experience on this.
Thanks and regards,
Aastha MehrotraHi ,
Any one worked in the MDM API to retrieve Hierarchy fields ???
Regards,
Arun. -
How to save the data to sap abap using Adobe Flex
Hi Everybody......
I am new to Adobe flex with sap abap.
How to save the data in sap abap using Adobe Flex coding is Action Script and using RFC web service.
Please give me any suggisions on that.
Thank you
Venkatesh VHi Venkatesh,
Try with folowing coding...
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
initialize="initApp()">
<mx:Label x="10" y="23" text="Airline" width="90" id="lblAirline"/>
<mx:TextInput x="108" y="21" id="txtAirline"/>
<mx:Button x="10" y="49" label="Get Data" id="btnGetData" enabled="false" click="getData()"/>
<mx:DataGrid x="10" y="97" id="dgFlightData" dataProvider="">
</mx:DataGrid>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.AbstractOperation;
import mx.rpc.events.FaultEvent;
import mx.rpc.soap.LoadEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
[Bindable] public var flightData:ArrayCollection;
private var flightWS:WebService;
private function initApp():void{
flightWS = new WebService();
flightWS.wsdl = "http://uscib20.wdf.sap.corp:50021/sap/bc/soap/wsdl11?services=ZGTEST&sap-client=000";
flightWS.addEventListener(FaultEvent.FAULT,onWSError);
flightWS.addEventListener(LoadEvent.LOAD,onWSDLLoaded);
flightWS.addEventListener(ResultEvent.RESULT,onFlightWSGotResult);
flightWS.loadWSDL();
private function getData():void{
var operation:AbstractOperation = flightWS.getOperation("ZGTEST");
var input:Object = new Object();
input.Airline = txtAirline.text.toUpperCase();
operation.arguments = input;
operation.send();
private function onWSError (event:FaultEvent):void{
private function onWSDLLoaded(event:LoadEvent):void{
btnGetData.enabled = true;
private function onFlightWSGotResult(event:ResultEvent):void{
flightData = event.result.SFLIGHT;
]]>
</mx:Script>
</mx:Application>
Regards,
Vinoth -
Why use filters in BADI (SAP-ABAP) when same can be achieved using paramete
Hello Experts!
I am a newbie in SAP and this might be a very basic question so, i am sorry for that!
I was wondering, what is the use of "filters(flt_val)" in BADI (SAP-ABAP) ?
I guess we can achieve the same using parameters ?
I know that we can pass structure as flt_val, thus reducing the no. of parameters sent. I also read about sending country and things like that to our BADIs to behave differently based on that.
(i.e. say tax rates differ from country to country so may be we can set tax rate of GB to 16 or something..)
but still i am confused about the significance of Filters.
I will be grateful, if anyone could answer this one...
Thanks in advance!!!
Rgds,
MayurHello Mr. Venu,
Thanks for your answer. It helped somewhat, but it's not solved the doubt to 100%...
Please let me ask you for some more information on this one and please correct if i am wrong: -
Suppose, there are 10 company codes that we need to handle, so as you said, we have 10 implementations of the BADI.
We decide to use company code as filter. We have 10 different implementations of BADI, which are deveoped
by 10 different teams(or 10 members of the same team etc..).
This will have 10 different Active implementations of our BADI. and based on the filter, respective impls are called.
Is this right or wrong?
If right, then why not use parameters instead? They can do the same!
If wrong, i am sorry, but could you elaborate about the mistake?
Thanks again,
Mayur. -
Is it possible to use Adobe Interactive Forms in SAP (ABAP) Trial Version?
Dear All,
i need some help concerning the usage of Adobe Interactive Forms in SAP (ABAP) Trial Version.
I installed SAP Netweaver 7.01 (ABAP Trial Version) and i would like to use the Adobe Interactive Form editor (transaction SFP). Is this trial version prepared for this? Is it possible to edit and test Interactive Forms in the ABAP Trial Version too?
Somebody told me that he installed Adobe Lifecycle Designer 7.1 but the layout manager part of the editor shortdumped when he wanted to go back to other parts of the editor or he wanted to save what he did...
Is it enough to install Adobe Lifecycle Designer 7.1? Is there something else to install or configure?
Thank you for your help in advance.
All the best, P. Phil.Yes, you need the lifecycle designer installed. That should be enough to work with the SFP transaction. But to actually use the form, I think you do need the ADS(Adobe Document Services) which runs on the java stack.
Regards,
Rich Heilman -
Wireless using SAP ABAP Report programming
Hi All Boss,
I am doing my project Wireless program using SAP ABAP
I need that project.
so please send me wireless program for sap abap and screen shot.
reply me urgent....
Please donot forgot to all..This is not a program writing service.
-
Configure SAP ABAP as service provider using SAML holder-of-key
Hi
We are trying to configure "SAML Holder of key" between Microsoft (as
a service consumer) and SAP ABAP (as service provider).
The service provider/SAP ABAP is release 7.11 and we need to configure this component.
We have found SAP note 1254821 and are trying to follow the instructions for
the "SAML Holder of key" scenario:
However there is one step that we do not understand: step 5 "The private key to decrypt the
encrypted....at the provider system must be a WS Security Identity in transaction TRUST"
Anyone who can elaborate of the meaning of this step and describe a procedure for what
exactly to do?
BR
Tom BoHi,
a service provider needs to check two things when processing message. The first thing is that SAML assertion was issued by STS by checking signature of SAML assertion. The SAML assertion is signed by STS (step 4 in OSS note). The second thing is to verify that sender knows key from SubjectConfirmation element (that's why it is called holder of key). One way is to encrypt and sign SOAP message using symmetric key. There is also option to use asymmetric key. The key is encrypted by STS using the public key of service provider. Therefore the private key must be imported in service provider system (step 5 from OSS note). More info can be found [here|http://help.sap.com/saphelp_nw73/helpdata/en/e5/9f9913fc9c418db98c8693b2bbdb7c/frameset.htm].
Cheers -
Improve data load performance using ABAP code
Hi all,
I want to improve my load performance using ABAP code, how to do this?. If i writing ABAP code in SE38 how i can call
in BW side? if give sample code to improve load performance it will be usefull. please guide me.There are several points that can improve performance of your ABAP code:
1. Avoid using SELECT...ENDSELECT... construct and use SELECT ... INTO TABLE.
2. Use WHERE clause in your SELECT statement to restrict the volume of data retrieved.
3. Use FOR ALL ENTRIES in your SELECT statement to retrieve the matching records at one shot.
4.Avoid using nested SELECT and SELECT statements within LOOPs.
5. Avoid using INTO CORRESPONDING FIELDS OF. Instead use INTO TABLE.
6. Avoid using SELECT * and select only the required fields from the table.
7. Avoid Executing a SELECT multiple times in the program.
8. Avoid nested loops when working with large internal tables.
9.Whenever using READ TABLE use BINARY SEARCH addition to speed up the search.
10. Use FIELD-SYMBOLS instead of a work area when there are more than 200 entries in an internal table where some fields are being manipulated.
11. Use MOVE with individual variable/field moves instead of MOVE-CORRESPONDING.
12. Use CASE instead of IF/ENDIF whenever possible.
13. Runtime transaction code se30 can be used to measure the application performance.
14. Transaction code st05 can be used to analyse the SQL trace and measure the performance of the select statements of the program.
15. Start routines can be used when transformation is needed in the data package level. Field/individual routines can be used for a simple formula or calculation. End routines are used when you wish to populate data not present in the source but present in the target.
16. Always use a WHERE clause for DELETE statement. To delete records for multiple values, use SELECT-OPTIONS.
17. Always use 'IS INITIAL' instead of equal to '' because null for a character is '' but '0' for an integer.
Hope it helps. -
Has any SAP project integrated an EFTPOS device with ABAP Gui using an ActiveX controller?
Dear Friends, I would like to know, Has any SAP Project integrated an EFTPOS Devise with ABAP Gui using ActiveX Controller? If used could you please share the Technicalities involved in them as we have a suggestion to have the same used in our Project.
Dear Friends, I would like to know, Has any SAP Project integrated an EFTPOS Devise with ABAP Gui using ActiveX Controller? If used could you please share the Technicalities involved in them as we have a suggestion to have the same used in our Project.
-
Want to have own selection screen in HR-ABAP report using LDB
Hi experts,
I am working on HR-ABAP report using LDB pnp and infotypes..But, here we get the built in selection criterion..but I want my own selection screen to be displayed..whats the solution for this??? Is it possible to create my own selection screen instead of default one..and how???
Please help me..its very urgent..Hi,
chk this out:
Create Report Categories
In this step, you define the report categories and determine the layout
of the standard selection screen for these report categories. You can
create report categories for programs or queries that are based on the
PNP or PNPCE logical databases.
The definition of report categories is divided into two sections:
o In the Change Report Category view, you define general attributes
such as sort order, input fields for date, and so on.
o In the Change Selection Criteria view, you define which selection
fields of the logical database should be avaliable on the selection
screen.
Example
You want to set up your system so that your employees can only start
evaluation reports for Payroll if they use a payroll area. Within a
payroll area, you should be able to select according to personnel
number. Additional selection criteria should not be possible and you
should not be allowed to enter a sort sequence.
Standard settings
The standard system already contains report categories. You can find the
attributes of the report categories in the table.
Note the following five report categories in particular:
o Report category ' ' is the SAP default report category for
programs that are based on the PNP logical database.
o Report category PNPCE is the SAP default category for programs that
are based on the PNPCE logical database.
o Report category '00000000' is the customer-specific default category
for programs that are based on the PNP logical database.
o Report category '0PNPCE' is the customer-specific default category
for programs that are based on the PNPCE logical database.
o Report category __X2001 is the default category for Queries that
are based on an InfoSet of the PNP LDB.
o Report category QUEPNPCE is the default category for queries that
are based on an InfoSet of the PNPCE LDB.
The default report categories are used when a report is called if
the report has not been assigned a report category.
Parameters and Options for Report Categories of the LDB PNP and PNPCE
Parameters and Options in Screen Area General Data
If you activate this parameter, you can only enter data on the data
selection period if you use reports that have been assigned. The
same date entries are then used for the person selection as for the
date selection.
o Matchcode allowed
If you activate this parameter, you have use of a Matchcode
pushbutton (search help) if you use reports that have been assigned.
This pushbutton enables you to perform the person selection.
o Sort allowed
If you activate this parameter, you have use of a Sort pushbutton if
you use report that have been assigned. This pushbutton enables you
to define a sort order before you execute the report.
o Organizational structure allowed
If you activate this parameter, you have use of an Org.Structure
pushbutton if you use reports that have been assigned. This
pushbutton enables you to perform the person selection.
Note:
For more information about these options, see the online
documentation under this path:
SAP Library -> Human Resources -> Reporting in Human Resources
Management -> Standard HR Reports -> Report Selection Screen in
Human Resources Management.
Parameters and Options in Screen Areas Data Selection Period/Person
Selection Period/Payroll Area/Period/Year
o Options for data selection period and person selection period (key
date and so on)
Here you define which options for date and person selection are
available for reports that have been assigned.
o Options for payroll area/period/year
Here you define which options for selection using payroll
area/period/year are available for reports that have been assigned.
Parameters and Options in Screen Area Selection View
o Type/Name
This parameter enables you to use selection views to define report
categories. You use the selection view selected here to determine
which fields are available in the Dynamic Selectionsy.
Note:
You create selection views for the PNP and PNPCE logical databases
in the Object Navigator (SE80):
1. Start the Object Navigator (SE80)
2. Choose Workbench -> Edit Object.
3. Choose the More... tab page and the Selection view on this tab
page.
4. Choose Create.
5. In the Create Selection View dialog box, choose the For any
tables option.
6. In the Name of view field, enter a name for your selection view.
7. In the Tables dialog box, enter the name of the table from which
you want to use fields.
Note:
When you enter the table name, observe the naming convention in
Personnel Administration:
Infotype number: nnnn -> table name: PAnnnn
8. Choose Continue.
9. In the Functional groups area, define functional groups by
assigning a name and a number.
10. Assign fields from the selected tables to the functional groups
by entering the number of the desired functional group in front of
each field.
11. Save your entries.
For more information about adjusting the dynamic selections using
your own selection views, see the online documentation under the
following menu path:
SAP Library -> Human Resources -> Reporting in Human Resources
Management -> HR Standard Reports -> Report Selection Screen in
Human Resources Management -> Enhancing the Selection Screen -
Dynamic Selections.
If you do not want to offer dynamic selections, make the following
settings:
- LDB PNP: In the Selection view field, enter PNP_NO_FREE_SEL.
- LDB PNPCE: Leave the Selection view field empty.
Parameters and Options in Screen Area Data Selection Period/Person
Selection Period/Payroll Area/Period/Year
o Available input parameters, date or period entry (today, key date,
all, and so on), and standard value.
Using the Standard value option, you define which of the selected
options is shown.
Parameters and Options in Screen Area CE Selection Fields
o CE selection fields (external person ID, grouping reason, grouping
value)
Using the options in this area, you define whether the external
person Id, grouping reason, or grouping value are available on the
selection screen.
Note:
These parameters are only relevant for you if you implement
Concurrent Employment (see also note 517071).
Parameters and Options in Screen Area Selection view
o Dynamic selections as dialog box
If this switch is set, you can call the dynamic selections as a
dialog box.
o Dynamic selections active
If this switch is set, the dynamic selections of the logical
database are active at the start of the report.
Note that the following combinations are possible for the last two
options mentioned:
Dyn.Sel. as dialog box/Dyn.Sel. active: inactive/inactive
Dyn.Sel. as dialog box/Dyn.Sel. active: inactive/active
Dyn.Sel. as dialog box/Dyn.Sel. active: active/inactive
Activities
1. Choose Edit -> New entries.
2. Enter an abbreviation and a long text for the report category.
The customer name range for report categories is 0-9.
3. Select the For the PNPCE logical database checkbox, if you want to
create a report category for a program or for queries of the PNPCE
logical database.
4. In the General Data screen area, choose the desired options.
If you want to use selection IDs, you must have first created and
grouped selection Ids. The IMG path to do this is given in the
parameter description section.
5. In the Data selection period/person selection period or Selection
period screen area, choose the desired options.
6. In the Selection view screen area, choose the desired options.
7. In the CE selection fields screen area, choose the desired (only
possible for report categories of the LDB PNPCE).
8. Save your entries.
9. Choose the subactivity Permitted selection criteria.
10. Choose Edit -> New entries.
11. In the Select option field, use the input help to select each field
that should be available on the selection screen.
12. Select the checkbox in the 1.page column, if you want this selection
field to be available directly when you call the selection screen.
Further notes
13. If you want to copy entries, you still have to enter the selection
parameters again in the subsequent screen.
o If you create the report category '000000000', a selection screen is
generated according to report category '00000000'for all reports for
which a report category has not explicitly been assigned.
Assign Report Categories
In this step, you assign a report category to your reports.
Example
You have created your own report, for example ZPCTEST1, and would like
it to have the selection screen that corresponds to that of the
evaluation report for Payroll, which is assigned to report category
'__M00001'.
Assign report category '__M00001' to the report.
Requirements
You must have defined the Report Categories.
Standard settings
SAP Standard Reports:
In the standard system, reports are assigned a report category. If you
want to override these assignments, perform the activities described
here. If you want to assign report categories to standard reports using
SE38, this represents a modification.
Customer-Specific Reports:
For reports you have developed yourself, you can either assign report
categories by performing the activities described here or directly in SE38.
Recommendation
Only assign a report category if you have created your own reports or if
the selection screens in the standard system do not meet your
requirements.
Activities
1. Choose Edit -> New entries.
2. Perform the required assignment using the Program name and Report
category fields.
3. Save your entries.
reward if helpful
regards,
madhumitha -
Employee details in SAP ABAP Hr
hi folks,
do any one hav done Report -Employee details in SAP ABAP Hr.check this code
* INFOTYPES *
INFOTYPES : 0000, " Actions
0001, " Organizaiton Assignment
0002, " Personnel Data
0008, " Basic Pay
0022, " Education
0025, " Appraisals
0077, " Additional Personal Data
2001, " Absences
9002, " Additional Personal Data
9545, " Discipline data
0000 NAME INT_PROM,
0000 NAME INT_CHGPY,
0302.
* INCLUDES *
* TABLES *
TABLES : PERNR.
* CONSTANTS *
CONSTANTS : C_ONE TYPE CHAR1 VALUE '1',
C_EARLY TYPE CHAR1 VALUE 'E',
C_NEW TYPE CHAR1 VALUE 'N',
C_EARLYDT TYPE SY-DATUM VALUE '20000501',
C_JAN TYPE CHAR2 VALUE '01',
C_FEB TYPE CHAR2 VALUE '02',
C_MAR TYPE CHAR2 VALUE '03',
C_AWL TYPE CHAR3 VALUE 'AWL',
C_LWP TYPE CHAR3 VALUE 'LWP'.
* TYPES *
TYPE-POOLS: SLIS. " ALV Type Pool
TYPES :
BEGIN OF T_DISCACT,
PERNR TYPE CHAR8,
COMM1 TYPE CHAR1,
DESCRI TYPE CHAR40,
COMM2 TYPE CHAR1,
MDATE TYPE CHAR10,
END OF T_DISCACT,
BEGIN OF T_INCRE,
PERNR TYPE CHAR8,
INCR1 TYPE CHAR10,
INCR2 TYPE CHAR10,
INCR3 TYPE CHAR10,
END OF T_INCRE,
BEGIN OF T_OUTPUT,
PERNR TYPE CHAR8,
NAME TYPE CHAR40,
DESIG TYPE CHAR40,
PESUB TYPE CHAR15,
ORGUN TYPE CHAR40,
COSTC TYPE CHAR20,
ETHIC TYPE CHAR2,
CPCODE TYPE ZCCODE,
GRADE TYPE CHAR8,
*** TYPE CHAR6,
DOB TYPE CHAR10,
DOJ TYPE CHAR10,
QUAL1 TYPE CHAR30,
QUAL2 TYPE CHAR30,
QUAL3 TYPE CHAR30,
QUAL4 TYPE CHAR30,
QUAL5 TYPE CHAR30,
LPROM TYPE CHAR10,
PROMD TYPE CHAR10,
PROMT TYPE CHAR1,
NOYRS TYPE CHAR2,
AWL TYPE CHAR9,
LWP TYPE CHAR9,
APPR1 TYPE CHAR9,
APPR2 TYPE CHAR9,
APPR3 TYPE CHAR9,
APPR4 TYPE CHAR9,
APPR5 TYPE CHAR9,
DISCI TYPE CHAR57,
END OF T_OUTPUT.
DATA : W_OUTPUT TYPE T_OUTPUT.
TYPES : BEGIN OF T_FILE.
INCLUDE STRUCTURE W_OUTPUT.
TYPES : INCR1 TYPE CHAR10,
INCR2 TYPE CHAR10,
INCR3 TYPE CHAR10,
END OF T_FILE.
DATA : W_FILE TYPE T_FILE.
TYPES : BEGIN OF T_EXCEL.
INCLUDE STRUCTURE W_FILE.
TYPES : END OF T_EXCEL.
* INTERNAL TABLES *
DATA : INT_NONEXE TYPE STANDARD TABLE OF ZHRT007 WITH HEADER LINE,
INT_OUTPUT TYPE STANDARD TABLE OF T_OUTPUT WITH HEADER LINE,
INT_DISCACT TYPE STANDARD TABLE OF T_DISCACT WITH HEADER LINE,
INT_QUALFI TYPE STANDARD TABLE OF T518B WITH HEADER LINE,
INT_INCRE TYPE STANDARD TABLE OF T_INCRE WITH HEADER LINE,
INT_DISCIP TYPE STANDARD TABLE OF ZHRT004 WITH HEADER LINE,
INT_PESUB TYPE STANDARD TABLE OF T001P WITH HEADER LINE,
INT_COSTC TYPE STANDARD TABLE OF CSKT WITH HEADER LINE,
INT_EXCEL TYPE STANDARD TABLE OF T_EXCEL WITH HEADER LINE,
EVENT TYPE SLIS_T_EVENT WITH HEADER LINE,
LISTHEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
* VARIABLES *
DATA : W_HIREDATE TYPE BEGDA,
W_WAGEGRP TYPE TRFGR,
W_CPCODE TYPE ZCCODE,
W_CAREERCD TYPE CHAR6,
W_PROMTYPE TYPE ZTSTYPE,
W_NOOFYRS TYPE ZNOYRS,
W_LASTPROM TYPE CHAR10,
W_PROMDATE TYPE BEGDA,
W_YEAR TYPE CHAR4,
W_APYEAR TYPE CHAR4,
W_APPRST TYPE SY-DATUM,
W_DISDATE TYPE ENDDA,
W_APPREND TYPE ENDDA,
W_ABSST TYPE ENDDA,
W_ABSEND TYPE ENDDA,
W_ABSYR TYPE CHAR4,
W_MONTH(2) TYPE N,
W_AWL TYPE CHAR9,
W_LWP TYPE CHAR9,
W_DISCI TYPE T_OUTPUT-DISCI,
W_ONE(2) TYPE N VALUE '01',
W_CURDATE TYPE CHAR10,
W_HEADING TYPE LVC_TITLE.
* SELECTION SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK FRM1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_WAGRP FOR P0008-TRFGR OBLIGATORY,
S_FROM FOR P0000-BEGDA OBLIGATORY NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK FRM1.
* Selection screen serach help for wage groups.
INCLUDE : ZHRI0003.
* AT SELECTION SCREEN *
* START OF SELECTION *
START-OF-SELECTION.
PERFORM PU_EXEUTIVES_PROM.
IF S_FROM-HIGH IS INITIAL.
S_FROM-HIGH = SY-DATUM.
ENDIF.
*Fetching employee data for all infotypes.
GET PERNR.
PERFORM PU_DATA_RETRIEVAL.
* START OF SELECTION *
END-OF-SELECTION.
PERFORM PU_FINAL_TABLE.
PERFORM PU_GRID_DISPLAY.
PERFORM PU_FREE_TABLES.
* SUBROUTINES *
*& Form PU_DATA_RETRIEVAL
FORM PU_DATA_RETRIEVAL .
* To find out date of join for employee
PERFORM PU_DATA_OF_JOIN.
* Employee Personnel data
RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND NE C_ONE.
REJECT.
ENDIF.
* Employee Name into output table
INT_OUTPUT-NAME = P0002-VORNA.
* INT_OUTPUT-DOB = P0002-GBDAT.
PERFORM PU_DATE_CONVERSION USING P0002-GBDAT
CHANGING INT_OUTPUT-DOB.
IF P0002-GESCH EQ 1.
INT_OUTPUT-*** = 'Male'.
ELSE.
INT_OUTPUT-*** = 'Female'.
ENDIF.
* Fetching employees from employee sub goup of Non Executive
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND NE C_ONE.
REJECT.
ENDIF.
IF P0001-PERSK EQ '30' OR P0001-PERSK EQ '20'.
* Position for employee into output table
PERFORM PU_POSTION_TEXT.
ELSE.
REJECT.
ENDIF.
* Position for employee into output table
PERFORM PU_POSTION_TEXT.
* Persoonel Sub Area text .
READ TABLE INT_PESUB WITH KEY WERKS = P0001-WERKS
BTRTL = P0001-BTRTL.
IF SY-SUBRC EQ 0.
INT_OUTPUT-PESUB = INT_PESUB-BTEXT.
ENDIF.
READ TABLE INT_COSTC WITH KEY KOSTL = P0001-KOSTL.
IF SY-SUBRC EQ 0.
INT_OUTPUT-COSTC = INT_COSTC-KTEXT.
ENDIF.
* Fetching employees from Additional Personal Data
RP_PROVIDE_FROM_LAST P0077 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND EQ C_ONE.
* Ethnic origin of employee into output table
INT_OUTPUT-ETHIC = P0077-RACKY.
ENDIF.
* Selecting data from basic pay last record with wage group
RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND NE C_ONE.
REJECT.
ELSE.
W_WAGEGRP = P0008-TRFGR.
* Employee Pay Scale Group into output table
INT_OUTPUT-GRADE = P0008-TRFGR.
ENDIF.
* Selecting data from Education with wage group
SORT P0022 BY BEGDA.
PROVIDE * FROM P0022 BETWEEN PN-BEGDA AND PN-ENDDA.
IF SY-TABIX EQ 1.
READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
IF SY-SUBRC EQ 0.
INT_OUTPUT-QUAL1 = INT_QUALFI-ATEXT.
ENDIF.
ELSEIF SY-TABIX EQ 2.
READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
IF SY-SUBRC EQ 0.
INT_OUTPUT-QUAL2 = INT_QUALFI-ATEXT.
ENDIF.
ELSEIF SY-TABIX EQ 3.
READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
IF SY-SUBRC EQ 0.
INT_OUTPUT-QUAL3 = INT_QUALFI-ATEXT.
ENDIF.
ELSEIF SY-TABIX EQ 4.
READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
IF SY-SUBRC EQ 0.
INT_OUTPUT-QUAL4 = INT_QUALFI-ATEXT.
ENDIF.
ELSEIF SY-TABIX EQ 5.
READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
IF SY-SUBRC EQ 0.
INT_OUTPUT-QUAL5 = INT_QUALFI-ATEXT.
ENDIF.
ENDIF.
ENDPROVIDE.
* Carrer path code for employee from Additional Personal Data.
RP_PROVIDE_FROM_LAST P9002 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND EQ C_ONE.
W_CPCODE = P9002-CPCODE.
INT_OUTPUT-CPCODE = P9002-CPCODE.
IF W_CPCODE EQ '001'.
IF W_HIREDATE < C_EARLYDT.
CONCATENATE W_CPCODE
C_EARLY
INTO W_CAREERCD.
ELSE.
CONCATENATE W_CPCODE
C_NEW
INTO W_CAREERCD.
ENDIF.
ELSE.
W_CAREERCD = W_CPCODE.
ENDIF.
ENDIF.
* Detrmine Promotion by Test/Service
READ TABLE INT_NONEXE WITH KEY CPCODE = W_CAREERCD
WAGEGROUP = W_WAGEGRP.
IF SY-SUBRC EQ 0.
W_PROMTYPE = INT_NONEXE-TSTYPE.
W_NOOFYRS = INT_NONEXE-NOYRS.
INT_OUTPUT-PROMT = W_PROMTYPE.
INT_OUTPUT-NOYRS = W_NOOFYRS.
ENDIF.
* Retriving last promotion date from actions
DELETE INT_PROM WHERE MASSN NE 'B3'.
SORT INT_PROM BY BEGDA DESCENDING.
* RP_PROVIDE_FROM_LAST INT_PROM SPACE PN-BEGDA PN-ENDDA.
READ TABLE INT_PROM INDEX 1.
IF SY-SUBRC EQ 0 AND INT_PROM-MASSN EQ 'B3'.
PERFORM PU_DATE_CONVERSION USING INT_PROM-BEGDA
CHANGING W_LASTPROM.
ELSE.
PERFORM PU_DATE_CONVERSION USING W_HIREDATE
CHANGING W_LASTPROM.
ENDIF.
* As there is no ending date for records which happen on same date
* for cross check to get last promotion Infotype 0302' is retived
IF P0302[] IS NOT INITIAL.
DELETE P0302 WHERE MASSN NE 'B3'.
SORT P0302 BY BEGDA DESCENDING.
READ TABLE P0302 INDEX 1.
IF SY-SUBRC EQ 0 AND
INT_PROM-BEGDA IS NOT INITIAL.
IF INT_PROM-BEGDA < P0302-BEGDA.
PERFORM PU_DATE_CONVERSION USING P0302-BEGDA
CHANGING W_LASTPROM.
ENDIF.
ENDIF.
ENDIF.
IF W_LASTPROM+0(2) GT '01'.
W_LASTPROM+0(2) = '01'.
W_ONE = W_LASTPROM+3(2) + 1.
W_LASTPROM+3(2) = W_ONE.
ENDIF.
* Last promaotion date for Employee into output table
INT_OUTPUT-LPROM = W_LASTPROM.
* To Find out promotion due date for employee.
* Fetching service availabilty data
W_YEAR = W_LASTPROM+6(4).
W_YEAR = W_YEAR + W_NOOFYRS.
CONCATENATE W_YEAR
W_LASTPROM+3(2)
W_LASTPROM+0(2)
INTO W_PROMDATE.
* Check promotion duedate is with in input range.
IF S_FROM-LOW IS NOT INITIAL.
CHECK W_PROMDATE GE S_FROM-LOW.
ENDIF.
IF S_FROM-HIGH IS NOT INITIAL.
CHECK W_PROMDATE LE S_FROM-HIGH.
ENDIF.
* Promaotion due date for Employee into output table
PERFORM PU_DATE_CONVERSION USING W_PROMDATE
CHANGING INT_OUTPUT-PROMD.
* Apprisal rating data.
* If promotion month is JAN,FEB,MAR deduct 6 years
IF W_PROMDATE+4(2) EQ C_JAN OR
W_PROMDATE+4(2) EQ C_FEB OR
W_PROMDATE+4(2) EQ C_MAR.
CLEAR W_YEAR.
W_YEAR = W_PROMDATE+0(4).
W_APYEAR = W_YEAR - 1.
W_YEAR = W_YEAR - 6.
ELSE.
* If promotion month is not JAN,FEB,MAR deduct 5 years
W_YEAR = W_PROMDATE+0(4).
W_APYEAR = W_YEAR.
W_YEAR = W_YEAR - 5.
ENDIF.
CONCATENATE W_YEAR
'0401'
INTO W_APPRST.
CONCATENATE W_APYEAR
'0331'
INTO W_APPREND.
DELETE P0025 WHERE BEGDA LT W_APPRST
OR BEGDA GT W_APPREND.
PROVIDE * FROM P0025 BETWEEN PN-BEGDA AND PN-ENDDA.
IF SY-TABIX EQ 1.
INT_OUTPUT-APPR1 = P0025-KSU01.
ELSEIF SY-TABIX EQ 2.
INT_OUTPUT-APPR2 = P0025-KSU01.
ELSEIF SY-TABIX EQ 3.
INT_OUTPUT-APPR3 = P0025-KSU01.
ELSEIF SY-TABIX EQ 4.
INT_OUTPUT-APPR4 = P0025-KSU01.
ELSEIF SY-TABIX EQ 5.
INT_OUTPUT-APPR5 = P0025-KSU01.
ENDIF.
ENDPROVIDE.
* Absence data.
IF W_PROMDATE+4(2) EQ C_JAN.
CLEAR W_YEAR.
W_YEAR = W_PROMDATE+0(4).
W_ABSYR = W_YEAR - 1.
W_MONTH = '11'.
W_YEAR = W_YEAR - 2.
ELSE.
* If promotion month is not JAN,FEB,MAR deduct 5 years
W_YEAR = W_PROMDATE+0(4).
W_ABSYR = W_YEAR.
W_MONTH = W_PROMDATE+4(2).
W_MONTH = W_MONTH - 01.
W_YEAR = W_YEAR - 1.
ENDIF.
CONCATENATE W_YEAR
W_MONTH
'23'
INTO W_ABSST.
CONCATENATE W_ABSYR
W_MONTH
'22'
INTO W_ABSEND.
SORT P2001 BY BEGDA.
DELETE P2001 WHERE ( AWART NE C_AWL AND
AWART NE C_LWP ) OR
( BEGDA LT W_ABSST
OR BEGDA GT W_ABSEND ).
PROVIDE * FROM P2001 BETWEEN PN-BEGDA AND PN-ENDDA.
IF P2001-AWART EQ C_AWL.
W_AWL = W_AWL + P2001-ABWTG.
ELSEIF P2001-AWART EQ C_LWP.
W_LWP = W_LWP + P2001-ABWTG.
ENDIF.
ENDPROVIDE.
INT_OUTPUT-AWL = W_AWL.
INT_OUTPUT-LWP = W_LWP.
* Increments dates' data.
DELETE INT_CHGPY WHERE MASSN NE 'B7'.
SORT INT_CHGPY BY BEGDA DESCENDING.
IF INT_CHGPY[] IS NOT INITIAL.
INT_INCRE-PERNR = INT_CHGPY-PERNR.
PROVIDE * FROM INT_CHGPY BETWEEN PN-BEGDA
AND PN-ENDDA.
IF SY-TABIX EQ 1.
PERFORM PU_DATE_CONVERSION USING INT_CHGPY-BEGDA
CHANGING INT_INCRE-INCR1.
ELSEIF SY-TABIX EQ 2.
PERFORM PU_DATE_CONVERSION USING INT_CHGPY-BEGDA
CHANGING INT_INCRE-INCR2.
ELSEIF SY-TABIX EQ 3.
PERFORM PU_DATE_CONVERSION USING INT_CHGPY-BEGDA
CHANGING INT_INCRE-INCR3.
ENDIF.
ENDPROVIDE.
APPEND INT_INCRE.
CLEAR INT_INCRE.
ENDIF.
* Disciplinary Actions.
CLEAR W_YEAR.
W_YEAR = W_PROMDATE+0(4).
W_YEAR = W_YEAR - 3.
CONCATENATE W_YEAR
W_PROMDATE+4(4)
INTO W_DISDATE.
SORT P9545 BY MDATE.
DELETE P9545 WHERE MDATE LT W_DISDATE
OR MDATE GT W_PROMDATE.
PROVIDE * FROM P9545 BETWEEN PN-BEGDA
AND PN-ENDDA.
READ TABLE INT_DISCIP WITH KEY MCODE = P9545-MCODE.
IF SY-SUBRC EQ 0.
INT_DISCACT-PERNR = P9545-PERNR.
INT_DISCACT-DESCRI = INT_DISCIP-DESCRI.
PERFORM PU_DATE_CONVERSION USING P9545-MDATE
CHANGING INT_DISCACT-MDATE.
INT_DISCACT-COMM1 = ','.
INT_DISCACT-COMM2 = ','.
APPEND INT_DISCACT.
CLEAR INT_DISCACT.
ENDIF.
ENDPROVIDE.
APPEND INT_OUTPUT.
CLEAR INT_OUTPUT.
CLEAR : W_HIREDATE,W_WAGEGRP,W_CPCODE,W_CAREERCD,W_PROMTYPE,
W_NOOFYRS,W_LASTPROM,W_PROMDATE,W_YEAR,W_APYEAR,
W_APPRST,W_DISDATE,W_APPREND,W_ABSST,W_ABSEND,
W_ABSYR,W_MONTH,W_AWL,W_LWP,W_DISCI.
ENDFORM. " PU_DATA_RETRIEVAL
*& Form PU_DATA_OF_JOIN
FORM PU_DATA_OF_JOIN .
CLEAR INT_OUTPUT.
READ TABLE P0000 WITH KEY MASSN = 'B1'.
IF SY-SUBRC NE 0 OR P0000-STAT2 NE '3'.
REJECT.
ELSE.
* Personnel number into output table
INT_OUTPUT-PERNR = P0000-PERNR.
PERFORM PU_DATE_CONVERSION USING P0000-BEGDA
CHANGING INT_OUTPUT-DOJ.
W_HIREDATE = P0000-BEGDA.
ENDIF.
ENDFORM. " PU_DATA_OF_JOIN
*& Form PU_POSTION_TEXT
FORM PU_POSTION_TEXT .
DATA : S_OBJECT TYPE OBJEC_T,
PERNR_TAB TYPE HRQUERY_PERNR_T ,
SOBID_TAB TYPE HRQUERY_SOBID_T ,
WA_SOBID TYPE HRQUERY_SOBID,
WA_PERNR TYPE HRQUERY_PERNR,
WA_OBJECT TYPE OBJEC.
WA_PERNR-PERNR = P0001-PERNR.
APPEND WA_PERNR TO PERNR_TAB.
WA_SOBID-PLVAR = '01'.
WA_SOBID-OTYPE = P0001-OTYPE.
WA_SOBID-SOBID = P0001-PLANS.
APPEND WA_SOBID TO SOBID_TAB.
WA_SOBID-PLVAR = '01'.
WA_SOBID-OTYPE = 'O'.
WA_SOBID-SOBID = P0001-ORGEH.
APPEND WA_SOBID TO SOBID_TAB.
CALL FUNCTION 'HR_GET_TEXT_FOR_OBJECTS'
EXPORTING
BEGDA = PN-BEGDA
ENDDA = PN-ENDDA
IMPORTING
OBJEC_TAB = S_OBJECT
CHANGING
PERNR_TAB = PERNR_TAB
SOBID_TAB = SOBID_TAB
EXCEPTIONS
WRONG_DATES = 1
OTHERS = 2.
IF SY-SUBRC EQ 0.
LOOP AT S_OBJECT INTO WA_OBJECT.
IF WA_OBJECT-OTYPE EQ 'O'.
INT_OUTPUT-ORGUN = WA_OBJECT-STEXT.
ELSEIF WA_OBJECT-OTYPE EQ 'S'.
INT_OUTPUT-DESIG = WA_OBJECT-STEXT.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " PU_POSTION_TEXT
*& Form PU_EXEUTIVES_PROM
FORM PU_EXEUTIVES_PROM .
SELECT * FROM ZHRT007 INTO TABLE INT_NONEXE.
SELECT * FROM ZHRT004 INTO TABLE INT_DISCIP.
SELECT * FROM T001P INTO TABLE INT_PESUB.
SELECT * FROM CSKT INTO TABLE INT_COSTC
WHERE SPRAS EQ SY-LANGU.
SELECT * FROM T518B INTO TABLE INT_QUALFI
WHERE LANGU EQ SY-LANGU.
ENDFORM. " PU_EXEUTIVES_PROM
*& Form PU_DATE_CONVERSION
FORM PU_DATE_CONVERSION USING INPUT_DATE TYPE SY-DATUM
CHANGING OUTPUT_DATE TYPE CHAR10.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = INPUT_DATE
IMPORTING
DATE_EXTERNAL = OUTPUT_DATE
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " PU_DATE_CONVERSION
*& Form PU_FINAL_TABLE
* Preparing final internal table for output to excel
FORM PU_FINAL_TABLE .
DATA : W_STR1(4) TYPE N,
W_STR2(4) TYPE N,
W_STR3(4) TYPE N,
W_EXSTR(4) TYPE N,
W_ORSTR(4) TYPE N,
W_INSTR(4) TYPE N,
W_ONSTR(4) TYPE N,
W_DISFLAG TYPE CHAR1,
W_INCFLAG TYPE CHAR1.
LOOP AT INT_OUTPUT.
MOVE-CORRESPONDING INT_OUTPUT TO INT_EXCEL.
LOOP AT INT_DISCACT WHERE PERNR = INT_OUTPUT-PERNR.
IF SY-TABIX EQ 1.
CONCATENATE INT_DISCACT-DESCRI
SPACE
INT_DISCACT-MDATE
INTO W_DISCI.
INT_EXCEL-DISCI = W_DISCI.
ELSE.
W_DISFLAG = 1.
ENDIF.
ENDLOOP.
LOOP AT INT_INCRE WHERE PERNR = INT_OUTPUT-PERNR.
INT_EXCEL-INCR1 = INT_INCRE-INCR1.
INT_EXCEL-INCR2 = INT_INCRE-INCR2.
INT_EXCEL-INCR3 = INT_INCRE-INCR3.
ENDLOOP.
APPEND INT_EXCEL.
CLEAR INT_EXCEL.
CLEAR : W_STR1,W_STR2,W_STR3.
IF W_DISFLAG EQ 1.
W_ORSTR = W_EXSTR.
LOOP AT INT_DISCACT WHERE PERNR = INT_OUTPUT-PERNR.
IF SY-TABIX NE 1.
CONCATENATE INT_DISCACT-DESCRI
SPACE
INT_DISCACT-MDATE
INTO W_DISCI.
INT_EXCEL-DISCI = W_DISCI.
APPEND INT_EXCEL.
CLEAR INT_EXCEL.
CLEAR : W_STR2,W_EXSTR.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " PU_FINAL_TABLE
*& Form PU_GRID_DISPLAY
* text
* --> p1 text
* <-- p2 text
FORM PU_GRID_DISPLAY .
DATA W_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
PERFORM F_FIELDCAT_INIT USING 'IT_HEADER' W_GT_FIELDCAT[].
IF INT_EXCEL[] IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IT_FIELDCAT = W_GT_FIELDCAT[]
IT_EVENTS = EVENT[]
TABLES
T_OUTTAB = INT_EXCEL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
MESSAGE S011(ZHR).
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " PU_GRID_DISPLAY
*& Form F_FIELDCAT_INIT
FORM F_FIELDCAT_INIT USING IT_TABLE
LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PERNR'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 14.
LS_FIELDCAT-SELTEXT_L = 'Personnel Number'.
LS_FIELDCAT-FIX_COLUMN = 'X'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NAME'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 30.
LS_FIELDCAT-SELTEXT_L = 'Name'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DESIG'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 25.
LS_FIELDCAT-SELTEXT_L = 'Desigination'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PESUB'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 16.
LS_FIELDCAT-SELTEXT_L = 'Personnel Sub Area'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ORGUN'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 25.
LS_FIELDCAT-SELTEXT_L = 'Organization Unit'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'COSTC'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 14.
LS_FIELDCAT-SELTEXT_L = 'Cost Center'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ETHIC'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 6.
LS_FIELDCAT-SELTEXT_L = 'Ethic'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'CPCODE'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 7.
LS_FIELDCAT-SELTEXT_L = 'CPCode'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'GRADE'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 12.
LS_FIELDCAT-SELTEXT_L = 'Current Grade'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = '***'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 6.
LS_FIELDCAT-SELTEXT_L = 'Gender'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DOB'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 11.
LS_FIELDCAT-SELTEXT_L = 'Date of Birth'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DOJ'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 11.
LS_FIELDCAT-SELTEXT_L = 'Date of Join'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'QUAL1'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 13.
LS_FIELDCAT-SELTEXT_L = 'Qualification 1'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'QUAL2'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 13.
LS_FIELDCAT-SELTEXT_L = 'Qualification 2'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'QUAL3'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 13.
LS_FIELDCAT-SELTEXT_L = 'Qualification 3'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'QUAL4'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 13.
LS_FIELDCAT-SELTEXT_L = 'Qualification 4'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'QUAL5'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 13.
LS_FIELDCAT-SELTEXT_L = 'Qualification 5'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LPROM'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 16.
LS_FIELDCAT-SELTEXT_L = 'Last Promotion Date'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PROMD'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 16.
LS_FIELDCAT-SELTEXT_L = 'Promotion Due Date'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PROMT'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 14.
LS_FIELDCAT-SELTEXT_L = 'Promotion Type'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NOYRS'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Number of Years'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'AWL'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 22.
LS_FIELDCAT-SELTEXT_L = 'Absence Without Leave'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LWP'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 22.
LS_FIELDCAT-SELTEXT_L = 'Leave Without Pay'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'APPR1'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Apprisal 1st'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'APPR2'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Apprisal 2nd'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'APPR3'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Apprisal 3rd'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'APPR4'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Apprisal 4th'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'APPR5'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = 'Apprisal 5th'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DISCI'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 60.
LS_FIELDCAT-SELTEXT_L = 'Disciplinary Actions - Date'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'INCR1'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = '1st Increment'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'INCR2'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = '2nd Increment'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'INCR3'.
LS_FIELDCAT-TABNAME = INT_EXCEL.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-SELTEXT_L = '3rd Increment'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
ENDFORM. " F_FIELDCAT_INIT
*& Form PU_FREE_TABLES
FORM PU_FREE_TABLES .
FREE : INT_NONEXE ,
INT_OUTPUT ,
INT_DISCACT ,
INT_QUALFI ,
INT_INCRE ,
INT_DISCIP ,
INT_PESUB ,
INT_COSTC ,
INT_EXCEL ,
EVENT ,
LISTHEAD .
ENDFORM. " PU_FREE_TABLES
reward points if helpful
Edited by: mohammed abdul hai on Jul 25, 2008 7:21 PM
Maybe you are looking for
-
How do I get rid of a document that appears on desk top?
A document appears on my desk top. How do I get rid of it?
-
Hi Everyone, My client requested for me to implement Repetitive Wires and treasury payment program. I have not done this before but for my understanding all the configuration needed are treasury payment program and creating repetitive codes and group
-
Struts - How not to lose parameter after validate() method
Hi I have following problem. When I submit a form(action= sendMessage.do) from site generated in writeMessage.do?id=1 action and validate method find errors it forwards to writeMessage.do I need to forward to writeMessage.do?id=1 <action path="/sendM
-
How can I make the landscape or portrait senser working when playing video
I use MPMoviePlayerController to play the movie. Can I implement it like the method - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceO rientation? I know we can set orientation using setOrientation:UIDeviceOrientationPo
-
Problem about lidopen or log in itself when it sleep
what i can do about this.I have checked another discussion about that i have enter this syslog -k Sender kernel -k Message Req Wake and then came out this; Jan 20 23:08:31 Burak-MacBook-Pro kernel[0] <Debug>: Wake reason: EC.LidOpen (User) Jan 21 09: