ABAP HR - How to insert payroll results using fm PYXX_WRITE_PAYROLL_RESULT
Hi,
I have a scenario where I want to read cluster information (PCL2 RX) from system A and insert it into system B. Both systems are SAP ECC 6.0. Employee master data already exists on target system, but no payroll results yet, so this is an insert and not an update.
I am using fm PYXX_READ_PAYROLL_RESULT (I also tried with HRCM_PAYROLL_RESULTS_GET) to read the data and then calling a RFC on system B where I use fm PYXX_WRITE_PAYROLL_RESULT to write the payroll results into database. Is this fm only to use in case of update, or it should also work when inserting new lines on the cluster? Because I always get a sy-subrc=0 but nothing is created on the db. Is there any other way to this? Do you have any code samples?
Many thanks,
Miguel
HI Miguel:
I have succe add of new payroll records, the following reference code:
*& Report ZTEST_BJARNE8
REPORT ztest_bjarne8.
TABLES:pcl1,pcl2.
INCLUDE rpc2cd00. "Cluster CD data definition
INCLUDE rpc2ca00. "Cluster CA Data-Definition
INCLUDE pc2rxcn0. "Cluster CN data definition
INCLUDE rpc2rx00. "Cluster RX data definition internat. part
DATA: refvar_curr TYPE REF TO data.
DATA: refvar_prev TYPE REF TO data.
DATA: refvar_cumul TYPE REF TO data.
DATA: t52relid_header TYPE t52relid.
FIELD-SYMBOLS: <payresult_current>.
DATA: employee_number LIKE pc200-pernr,
client LIKE sy-mandt,
globalmolga TYPE T500L-MOLGA,
cluster_id LIKE t500l-relid,
isocode LIKE t500l-intca.
DATA: rgdir_entry LIKE pc261.
CALL FUNCTION 'HR_PCLX_INIT_BUFFER'.
employee_number = '81000463'.
CLEAR:rgdir.REFRESH rgdir[].
CALL FUNCTION 'CU_READ_RGDIR_NEW'
EXPORTING
persnr = employee_number
check_read_authority = space
imp_client = client
TABLES
in_rgdir = rgdir
EXCEPTIONS
no_record_found = 1
import_mismatch_error = 2
no_read_authority = 3
OTHERS = 4.
LOOP AT rgdir.
ENDLOOP.
cluster_id = 'CN'.
SELECT SINGLE * FROM t52relid INTO t52relid_header
WHERE relid = cluster_id.
CREATE DATA refvar_curr TYPE (t52relid_header-typename).
ASSIGN refvar_curr->* TO <payresult_current>.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = cluster_id
employeenumber = employee_number
sequencenumber = rgdir-seqnr
check_read_authority = space"false "already done
filter_cumulations = space
CHANGING
payroll_result = <payresult_current>
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
OTHERS = 8.
IF NOT <payresult_current> IS INITIAL.
"TODO changed RT data......
"Add new month payresult
rgdir-seqnr = rgdir-seqnr + 1.
CALL FUNCTION 'PYXX_WRITE_PAYROLL_RESULT'
EXPORTING
clusterid = cluster_id
employeenumber = employee_number
sequencenumber = rgdir-seqnr
payroll_result = <payresult_current>
CLIENT =
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_export = 2
export_error = 3
subpool_dir_full = 4
no_update_authority = 5
incomplete_result_imported = 6
OTHERS = 7
IF sy-subrc <> 0.
ENDIF.
APPEND rgdir.
globalmolga = '28'.
client = '200'.
CALL FUNCTION 'CU_WRITE_RGDIR_NEW'
EXPORTING
persnr = employee_number
molga = globalmolga
imp_client = client
TABLES
rgdir = rgdir
EXCEPTIONS
no_update_authority = 1
OTHERS = 2.
CALL FUNCTION 'HR_FLUSH_BUFFER_UPDATE_PCLX'
EXPORTING
test = space
EXCEPTIONS
insert_error = 1
no_update_authority = 2
OTHERS = 3.
IF sy-subrc <> 0.
"MESSAGE e062.
ENDIF.
ENDIF.
"INCLUDE rpc2cd09.
*& INCLUDE
INCLUDE rpppxd00. "Data definition buffer PCL1/PCL2
INCLUDE rpppxd10. "Common part buffer PCL1/PCL2
INCLUDE rpppxm00. "Buffer handling routine
Similar Messages
-
How to find payroll results using includes
hi all,
I have a requirement to get the payroll results of number of data clusters using includes not by using function modules.
I know by using function modules.
How to find out the exact include for given data cluster. If there is any path please let me know.
thanks & regards,
sekhar.Hi,
You can define macros in the program and call depending on the cluster you need.
For Eg for B2 cluster,
rp-imp-c2-b2.
before calling macros,
You should fill the key
move pernr to b2-key-pernr.
move year to b2-key-pabrj.
move period to b2-key-pabrp.
move '1' to b2-key-cltyp.
rp-imp-c2-b2.
For payroll
RP-IMP-C2-RU
Regards,
Manoj. -
Reading Payroll Results using PNPCE
Hi All,
As far as reading infotypes/master data is concerned, I am comfortable using "PNPCE" instead of logical database "PNP".
Can any one tell me how can I read payroll results using "PNPCE". Since Get payroll event is not available in pnpce.Hi khalid,
1. U want the remuneration (monthly salary )
2. U won't get it DIRECTLY from any table.
(Its stored in cluster format)
3. Use this logic and FM.
DATA: myseqnr LIKE hrpy_rgdir-seqnr.
DATA : mypy TYPE payin_result.
DATA : myrt LIKE TABLE OF pc207 WITH HEADER LINE.
SELECT SINGLE seqnr FROM hrpy_rgdir
INTO myseqnr
WHERE pernr = mypernr
AND fpper = '200409'
AND srtza = 'A'.
IF sy-subrc = 0.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = 'IN'
employeenumber = mypernr
sequencenumber = myseqnr
CHANGING
payroll_result = mypy
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
myrt[] = mypy-inter-rt.
READ TABLE myrt WITH KEY lgart = '1899'.
4. the internal table myrt
will contain what u require.
regards,
amit m. -
Looping payroll results using pnpce ldb
hii experts,
Can anybody tell me how can v loop payroll results using pnpce ldb..plz provide me the syntax...or any reference report
program.Hi First Using Get peras event read the RGDIR results as below
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = p_pernr
IMPORTING
molga = p_molga
TABLES
in_rgdir = p_rgdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.
Get the Cluster ID based on the molga value of the employee using T5001 table
Then Based on the RGDIR results loop retrive the payroll results below
LOOP AT gt_rgdir INTO wa_rgdir WHERE fpbeg LE wa_dates-endda AND fpend GE wa_dates-endda
AND srtza EQ c_a
AND payty EQ c_space.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = wa_t500l-relid
employeenumber = pernr-pernr
sequencenumber = wa_rgdir-seqnr
read_only_international = 'X'
CHANGING
payroll_result = gt_result
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10. -
How to import payroll result from 3rd party system to SAP
Hi Experts,
May i know how to import payroll result from legacy system / 3rd party payroll system into SAP.
i need to import the payroll result from Jan - April (from 3rd party payroll system) and system go live on May. I using payroll malaysia.
Thanks.check this link
http://help.sap.com/saphelp_40b/helpdata/en/91/80e9087834d111a4620060b03c3b0e/content.htm -
How to insert the data using matrix
Hi
All how to insert the data using matrix feild
plz help me
thanks
LoyHi Loy,
The best way to fill an entire matrix is to use a DBDatasource, here is some sample code:
Dim oForm As SAPbouiCOM.Form
oForm = SBO_App.Forms.Item("YourFormTypeID")
'1. Add a DBDataSource to the form
oForm.DataSources.DBDataSources.Add("OUSR")
Dim oColumnDBS As SAPbouiCOM.Column
Dim oColumnUDS As SAPbouiCOM.Column
Dim i As Integer
Dim GenEdt As SAPbouiCOM.EditText
Dim oMatrix As SAPbouiCOM.Matrix
Dim oColumns As SAPbouiCOM.Columns
Dim oDBDataSource As SAPbouiCOM.DBDataSource
oMatrix = oForm.Items.Item("7").Specific
oColumns = oMatrix.Columns
'2. DBDataSource: Binding a field / alias of the table to a column
oColumnDBS = oColumns.Item("V_1")
oColumnDBS.DataBind.SetBound(True, "OUSR", "U_NAME")
'3. getting the data sources bound to the form
oDBDataSource = oForm.DataSources.DBDataSources.Item("OUSR")
oMatrix.Clear()
' Querying the DB Data source
oDBDataSource.Query()
' Adding the data to the matrix
oMatrix.LoadFromDataSource()
When you want to fill a specific field use :
GenEdt = oMatrix.Columns.Item("V_2").Cells.Item(1).Specific
GenEdt.String = "Hello" -
How to track payroll results if payroll runs twice in day.
Hi ALL,
How can i see all payroll results if payroll runs more than once in a day. i.e if program runs on 31.10.2008 at 9.00 AM and the same day program runs at 8.00PM .i have to find both results. please give me any table or program form whihc we can find the No.of time that program was run in the one day.
thank You
Ram>
Asam Ramakrishna wrote:
> Hi ALL,
>
> How can i see all payroll results if payroll runs more than once in a day. i.e if program runs on 31.10.2008 at 9.00 AM and the same day program runs at 8.00PM .i have to find both results. please give me any table or program form whihc we can find the No.of time that program was run in the one day.
>
> thank You
> Ram
The payroll results directory of an employee can be found in the database table HRPY_RGDIR, alternatively you
can also use the FM CD_READ_RGDIR or the macro RP-IMP-C2-CD to fetch the payroll results directory for an employee -
How to insert a number using ADO or OLEDB by oracle provider
I create a talbe .
Create Table A
(id number(7));
I use ADO to access the table a;
_ConnectionPtr pConn=NULL;
pConn.CreateInstance(__uuidof(Connection));
_RecordsetPtr pRst=NULL;
pRst.CreateInstance(__uuidof(Recordset));
pConn->Provider="OraOLEDB.Oracle.1";
try
pConn->Open("","ISVISION","ISVISION",NULL);
pRst->CursorLocation=adUseClient;
pRst->Open("A",pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdTable);
pRst->AddNew();
pRst->Fields->Item[0L]->Value=100L;
//It raise a exception,why?
//If I convert the datetype of "ID" to CHAR(7)
//and pRst->Fields->Item[0L]->Value=L"100",it is ok.
pRst->Update();
pRst->Close();
pConn->Close();
catch (_com_error& e)
MessageBox(e.Description(),"error",MB_OK|MB_ICONWARNING);
return ;
if (pConn)
pConn.Release();
if (pRst)
pRst.Release();
I create a table Aã
create table A
ID number(7)
Now ,I use OLE DB to access the table A;
struct CIsA
CIsA()
memset(this, 0, sizeof(*this));
public:
DB_NUMERIC m_ID;
BEGIN_COLUMN_MAP(CIsA)
COLUMN_ENTRY_PS(1, 7, 0, m_ID)
END_COLUMN_MAP()
DEFINE_COMMAND(CIsA, _T("SELECT ID FROM A"))
CDataSource DataSource;
HRESULT hrt=DataSource.Open(_T("OraOLEDB.Oracle.1"),NULL,_T("ISVISION"),_T("ISVISION"));
CSession Session;
hrt=Session.Open(DataSource);
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY,
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);
CCommand<CAccessor<CIsA> > Command;
Command.Open(Session,NULL,&propset);
tcscpy((TCHAR*)Command.mID.val,_T("1245"));
Command.m_ID.sign=1;
hrt=Command.Insert();//It is wrong,why?
Command.Close();
Session.Close();
DataSource.Close();
In Fact,the two problems is the same. The key of problem is how to insert a number into oracle.
help me! thank you.hi
create a table something like this.
create table image(
Image_Id number(5),
Image blob);create a form with the same table and use the following code.
when-button-pressed trigger.
read_image_file('c:\image_name.jpg' , 'jpg' , 'image.image');if its correct/helpful please mark it thanks.
sarah -
How to obtain aggregate results using ODBC?
How do I obtain results of an aggreate functions like SUM etc? I have an MFC application that uses CRecordset. Following is the code snip:
CDatabase db1;
o1 db; // class that is a sub class of CRecordset and makes a connection to the Oracle
// database
try
BOOL bUseCursorLib = FALSE;
db1.Open(_T( "globaldb" ), FALSE, FALSE, _T( "ODBC;UID=scott;PWD=tiger" ),FALSE);
catch(CDBException* e)
TRACE0(e->m_strError + "\n");
AfxMessageBox("Error... "+e->m_strError);
e->Delete();
if( db1.IsOpen() )
db1.Close();
CString strCmd = "select sum(ordernumber) from orders";
try
db1.ExecuteSQL( strCmd );
catch(CDBException *e)
AfxMessageBox("Error here: "+e->m_strError);
CString t;
t.Format("Sum=%ld",db.m_sum_ORDERNUMBER);
AfxMessageBox(t);
I always get zero displayed as the sum. I am going wrong somewhere for sure. I am not able to figure out.This ought to work. Can you verify that you have the latest ODBC driver and that you have the proper version of the MDAC installed?
Justin -
How to clear Payroll results in Bulk???
Hi Folks,
Could all the payroll results of one personnel numbers be removed one stretch????
(Instead of pu01)
regards,
SanthoshRPUAUD00 HR Report to list all logged changes in infotype data for an employee. Uses the PCL4 Audit Cluster.
RPUAUDDL HR Report to delete audit data from the PCL4 Audit Cluster
RPUDELPN Delete all info for an employee number, including cluster data and infotypes
RPUP1D00 View/Delete records from PCL1 Cluster
RPUP2D00 View/Delete records from PCL2 Cluster
RPUP3D00 View/Delete records from PCL3 Cluster
RPUP4D00 View/Delete records from PCL4 Cluster -
How to insert variable value using select statement - Oracle function
Hi,
I have a function which inserts record on basis of some condition
INSERT INTO Case
Case_ID,
Case_Status,
Closure_Code,
Closure_Date
SELECT newCaseID,
caseStatus,
Closure_Code,
Closure_Date,
FROM Case
WHERE Case_ID = caseID
Now i want new casestatus value in place of select statement caseStatus value. I have a variable m_caseStatus and i want to use the value of this variable in above select statement.
how can i use this.
thanksHi,
I have a function which inserts record on basis of some condition
INSERT INTO Case
Case_ID,
Case_Status,
Closure_Code,
Closure_Date
SELECT newCaseID,
caseStatus,
Closure_Code,
Closure_Date,
FROM Case
WHERE Case_ID = caseID
Now i want new casestatus value in place of select statement caseStatus value. I have a variable m_caseStatus and i want to use the value of this variable in above select statement.
how can i use this. Do not select Case_Status from inner select, so null will be inserted then after inserting it update the case status with m_caseStatus.
Regards. -
How to insert the records using sql query
hi,
i insert the record uisng sql query and DOTNET programme successfully and increase the doc num .ubut when i try to add record using SAP B1 the old Doc no show.It means its not consider the docnums which are not inserted by sql query.
how can i solve this problem?
Regards,
M.Thippa ReddyYou are not support use Insert / Update / Delete on SAP Databases directly.
SAP will not support any database, which is inconsistent, due to SQL-Queries, which modify datasets or the datastructure of the SAP Business One Database. This includes any update-, delete- or drop-statements executed via SQL-Server Tools or via the the query interface of SAP Business One
Check SAP Note: 896891 Support Scope for SAP Business One - DB Integrity
[https://websmp130.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/smb_searchnotes/display.htm?note_langu=E¬e_numm=896891] -
How to insert delay without using loops, and how can I use variable to store data in labview
Hi all,
I am new to Labview and I realized that quite often I am in condition to require a delay beween two functions or elements.. how can we insert a delay in such cases?
I know how to use delays in a loop. but don't know how to inser some time delay between two elements.
I have one more question, I know its a bad practice to post 2 questions in 1 thread.
How can I use a temporary variable to store data, So far I am storing it in an indicator by making it invisible in front panel and making local variable of that indicator, is it the right way to do it ?
Thanks in advance.Generally, LV doesn't have variables in the same sense that most languages do. You can use indicators to perform the same function as variables, but as Adnan pointed out, you run the risk of having race condition and it creates data copies, which is a problem if you have a lot of data. In most cases, you should use wires to perform the function of variables, which is to store data and make it available to the different functions in your code. Instead of thinking about variables, you need to think about data (something like "I have the data coming out of this function. Where does it need to go?").
Try to take over the world! -
How to get sequence result using httpservice
I send 2 httpservice requests to server: requestA and
requestB in sequence, but sometime I get the response of responseB
first. How can I get the sequence result, response from A and then
response from B.use AsyncToken - assign it to your HTTPService like so....
var tok:AsyncToken = myservice.send(params)
tok.requestName = "myRequest"
Then in your resultHandler test for the token
if(event.token['requestName']=='myRequest'){
do something with the event.result
} -
How to get fixed results using JPA
Hi
I have a table with lot of rows, when I querry, it is taking a lot of time and I am displaying that many rows in UI in single table. So it is not scaling well.
SO I am planing to show x number of row in on page. So for that to achieve, how do I querry the db (derby) using JPA to get first 25 rows, next 25 rows...
I appricate any help
thanksi think you can have a serial number column in your table and you keep track of that serial number. I mean pass it to your method along with the size of page. Lets say if the number starts from 0 then you can calculate the first page using starting number + page size, if your page size is 25 then you will get 0+25 =25 and you can use the result to query from database like;
select * from myTable where rowNo<=25
You can store this number (Now 25) in user's session and pass it to the method.
Maybe you are looking for
-
GIMP won't open PDF files anymore
I just reinstalled my system and noticed that GIMP won't open PDF files anymore. I remember being able to use GIMP to open PDFs and save them as high resolution images.... Am I missing something?
-
When i try to create Filter on aggregation level the system gives me error
Hi BI Guru's, I am facing a problem BI - IP . When i try to create Filter on aggregation level the system gives me follwoing error. "Authorization check of component failed" "You do not have authorisation for Add or Create". "Could not create Filter
-
Get next BusinessPartners Code/Key
Hi together, I am looking for a way to get the next CardCode of a BusinessPartner to add a new one by DIApi. I tried it by using some Code like this, but it does not work fine: Dim oSeriesService As SAPbobsCOM.BusinessPartnersService = cmpService.Get
-
Hi, I am using EWS Java APIs and passing OAuth tokens to fetch data from office 365 mailboxes. Because I am developing Web APIs I preferred using "Application Permissions" defined in Azure active directory application for Office 365, and used "client
-
Update Query is running very slow
Database version 11.2.0.2 UPDATE ps_jrnl_ln a SET a.jrnl_line_status = :"SYS_B_0" WHERE a.project_id = :"SYS_B_1" AND a.account IN ( SELECT DISTINCT c.account FROM PSTREENODE A , PSTREELEAF B , PS_OI_NODE_BAL_PC G , PS_GL_ACCOUNT_TBL C WHERE A.E