2010년 12월 27일 월요일

Massive upload of employee photos in HR

You have to use a BDC program for mass upload or upload individually through OAAD.

Use the FM ARCHIV_CREATE_DIALOG_META for upload of Photo, Since the recording of OAAD will pop-up a dialog window.

chk this source code.

*Table for filling screen
DATA: BEGIN OF t_record OCCURS 0,
pernr(12) TYPE c, "Employee Number
path(255) TYPE c, "photo path
END OF t_record.

LOOP AT t_record.

* Since the employee photo is always stored in 0002 infotype, we need to
* concatenate the employee id with preceeding zeros and pad "0002" in
* right into the pernr field which will be passed to object_id

* Any unwanted leading zeros deleted

SHIFT t_record-pernr LEFT DELETING LEADING '0'.

* Any leading space is removed

CONDENSE t_record-pernr.

* 0002 is concatenated to the emp id

CONCATENATE t_record-pernr '0002' INTO t_record-pernr.

* Push the contents of pernr into pernr_zero since its a NUMC type field
* and hence zeros will be padded automatically by the system

w_pernr_zero = t_record-pernr.

* Now pernr will be having zero padding

CLEAR w_pernr_pass.
w_pernr_pass = w_pernr_zero.

* from "ARCHIV_CREATE_DIALOG_META"


CALL FUNCTION 'ARCHIV_CREATE_DIALOG_META'
EXPORTING
archiv_id = 'A1'
ar_object = 'HRICOLFOTO'
object_id = w_pernr_pass
sap_object = 'PREL'
file = t_record-path.
IF sy-subrc 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

Hope this helps you.

=======================================
Santhosh Kumar R

https://forums.sme.sap.com/thread.jspa?threadID=666964&tstart=-7&messageID=5963940



=======================================
ARCHIV_CREATE_FILE

2010년 10월 28일 목요일

인사발령때 참조사번 쓰는 경우 - 펌

원본: http://www.enm-consulting.co.kr/xe/893

===================================================
인사발령때 참조사번을 이용하면 참조사번에 등록된 마스터데이터를 읽어 옴.

인사발령 후 참조사번을 그대로 두면 이후 한쪽 사번의 인포타입에 등록하면
다른 참조 사번에도 같은 데이터가 등록 됨.

참조 사번을 삭제하려면 - 인포타입 0031에서 삭제
참조사번 등록확인하려면 HRP1001테이블에서 OTYPE CP이고 OBJID가 동일한 사번들 임
복사되는 인포타입 종류 확인
IMG : 인사관리 -> 절차커스터마이징 -> 동시고용세팅 -> 인포타입 복사

그룹사 이동시 동일사번 사용 경우 - 펌

원본: http://www.enm-consulting.co.kr/xe/890

===================================================
테스트 결과
1. 퇴직발령 없이 소득정산(0008) 실행할 때 급여 Function KRSIP 에서
에러 발생 -> 퇴직일을 읽어 오는 Function에서 퇴직일 결과가 '000000'으로 됨
2. 소득정산 후 이후 회사에서 급여 계산시 CRT가 초기화한 다음 누적되어야 하는데,
계속 누적 됨.
3. 근로소득 원천징수 영수증 출력시 이전 소득정산(0008) 실행한 것을 출력해도
근무지 정보가 현재 소속회사로 출력됨.

처리방법
1. 입사일 퇴사일 BADI 수정회사 그룹사 이동 발령전일을 퇴사일에 추가
IMG : Personal Management->Personnel Administration->Evaluation basis
-> BADI Determine Entry/Leaving Dates
2. 급여 Function SETCU를 복사 수정해서 이전 급여가 중도정산(0007,0008)
이면 CRT Refresh
3. 중도정산 (0007,0008) 실행될때 그룹사 이동발령인 경우 종(전)근무지 인포타입 3542생성하여
중도정산 결과 저장 (연말정산 실행시 전근무지 정보로 읽어 옴)
4. 중도정산이 있는 사원의 연말정산 실행시 급여 Function KRTAX의 Tax Period의 시작일을
중도정산 익일로 변경
5. 원천징수 영수증 출력등 프로그램에서 사원의 소속근무지를 읽어오는 기준일자 수정

대량의 데이타를 저장 시 Buffer Clear - 펌

원본: http://www.enm-consulting.co.kr/xe/641

================================================
BDC나 또는 다른 방법으로 대량의 데이타를 Infotype에 처리 시
HR_INFOTYPE_OPERATION 을 사용하는데 이 함수의 큰 단점이
대량의 데이타 처리 시 시간이 지날수록 한건의 데이타 처리 시간이
기하급수적으로 증가하여 때로는 시스템이 죽은 것처럼 보일 정도로
한건의 데이타처리 시간이 엄청나게 오래 걸리는 경우가 종종 발생합니다.

이를 방지하기 위해 메모를 비워주는 함수를 사용하면 그 시간이 굉장히
단축됩니다. (LOOP문의 맨처음 정의)

Function : HR_INITIALIZE_BUFFER
HR_PSBUFFER_INITIALIZE

[ 사용예 ]
LOOP AT it_record.
* BUFFER 초기화
CALL FUNCTION 'HR_INITIALIZE_BUFFER'.
CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
...

...
ENDLOOP.

휴무쿼터 관련 Function Module - 펌

원본: http://www.enm-consulting.co.kr/xe/632

============================================================
대게 Infotype에 데이타를 저장 시 HR_INFOTYPE_OPERATION을 사용하는데
휴무쿼터에 대한 데이타 반영시 HR_INFOTYPE_OPERATION을 사용하면
쿼터 반영에 오류가 있다고 합니다.

휴무관련 데이타(특히 2001번) 반영 시 아래에 명기되어 있는 Function 그룹의
Function을 사용해야 제대로 데이타가 처리되니 참고하시기 바랍니다.

Function Group : HRTIM00BAPIABSATT
Function Module : BAPI_PTMGRATTABS_MNGCHANGE - Change Attendances/Absences
BAPI_PTMGRATTABS_MNGCREATION BAPI - Creates Attendances/Absences
BAPI_PTMGRATTABS_MNGDELETE - Delete Attendances/Absences
BAPI_PTMGRATTABS_MNGFROMWF - Create/Change/Delete Attendances/Absences from Workflow

2010년 9월 16일 목요일

Note 317722 - Upgrade information for table T77S0

Note 317722 - Upgrade information for table T77S0

Summary

Symptom

A number of entries in table T77S0 delivered in the standard 4.6B system are incorrect. These include:
PLOGI ORGA
TRSP CORR
PLOGI EVENB
...
After upgrade, it is possible that the system response changed in many instances in HR. For example, after the upgrade the automatic transport connection is always active.For example, the automatic transport link is always active after the upgrade.

Other terms

Upgrade

Reason and Prerequisites

The error occurs during an upgrade from a release <= 4.6B to a Release >= 4.6B.In addition, the error occurs during each upgrade to an R3 Enterprise system.

Solution

On SAPSERV3, in the directory ~ftp/general/R3server/abap/note.0317722 you will find subdirectories containing the required programs RH77S0BU and RH77S0RE.
If the legacy system has status 3.0 or 3.1, choose the ~/s0_3 subdirectory.If the legacy system has a status >= 4.0, choose the ~/s0_4 subdirectory.
Start the report RH77S0BU before the upgrade.This report saves the T77SO entries in all clients in table INDX.
Copy report RH77S0RE to your customer name range so that you still have the report after the upgrade.It is important that you also copy the status of the report. After the upgrade you can run the copied report per client.The report provides a list of entries that are different and can restore the old status where necessary.The problem only concerns entries that were changed by the customer in a former release. No new flags should be deleted.



Header Data


Release Status: Released for Customer
Released on: 21.02.2003 14:08:35
Master Language: German
Priority: Correction with high priority
Category: Upgrade information
Primary Component: PA-BC Basis

Affected Releases

Release-Independent

Related Notes
748338 - Upgrade LSO (Table LSO_CUSTOMIZE_C)
505820 - Backup of Table entries in T77S0 for CM Upgrade
373038 - Organizational Management: data missing after upgrade
353861 - HR: Upgrade to 4.6C (or higher)

==============
참고용. old버전 자료임

Backing Up Table T512W (Wage Types)

https://websmp105.sap-ag.de/~sapidb/011000358700008832642001E

acking Up Table T512W (Wage Types)
Use
We generally recommend backing up wage types table T512W before upgrading. However, in the following cases, you must back up table T512W:

You have modified 'technical' wage types, that is wage types beginning with '/' (adjustment of processing class, evaluation class, and so on).
You are using SAP model wage types, that is wage types beginning with a letter, and you have modified these.
You have defined wage types that are not within the customer name range. To find out if this applies, check table TRESC by entering T512W as the table name and TABU as the object.
Procedure
Note
Read SAP note 447984 and implement SAP note 605878 before the upgrade.
Before the upgrade, back up table T512W or selected areas of this table. To do this, use report RPU12W0S. The documentation on the report includes instructions on how to proceed.

Note
Table T512W is client-specific. Make sure you back up the data in the correct client.
You can restore your backup copy after the upgrade. To do this, you can use the following reports:
RPU12W0C restores selected parts of table T512W. This method is particularly suitable if you have exact documentation about the wage types you have modified.
RPU12W0S restores the entire backup or a generically selected area of the table.

2010년 9월 10일 금요일

Wagetype copy: table to table

(1)T511
(2)T512T
(3)T512W
(4)T512Z
(5)T52D7
(6)T52DZ
(7)T539A
(8)T539J
(9)T591B
(10)T51P6
(11)T510S
(12)T52EK
(13)T52EKT
(14)T52EL
(15)T52EZ

========================
sample sql

T511
WHERE MOLGA = '41' AND LGART BETWEEN '1A00' AND '9ZZZ'

T512T
WHERE SPRSL = '3' AND MOLGA = '41' AND LGART BETWEEN '1A00' AND '9ZZZ'

T512W
WHERE MOLGA = '41' AND LGART BETWEEN '1A00' AND '9ZZZ'

T512Z
WHERE MOLGA = '41'

T52D7
WHERE MOLGA = '41'

T52DZ
WHERE MOLGA = '41'

T52EL
WHERE MOLGA = '41'

T52EZ
WHERE MOLGA = '41'

T539J
WHERE MOLGA = '41' AND BWLGA BETWEEN '1A00' AND '9ZZZ'

T591B
WHERE MOLGA = '41'

2010년 9월 1일 수요일

Function: SE16N_INTERFACE (Display table as full screen)

SE16N_INTERFACE

I_TAB = Table name
I_EDIT = 'X'

FUNCTION SE16N_INTERFACE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_TAB) TYPE SE16N_TAB
*" VALUE(I_EDIT) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_SAPEDIT) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_NO_TXT) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_MAX_LINES) TYPE SYTABIX DEFAULT 500
*" VALUE(I_LINE_DET) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_DISPLAY) TYPE CHAR1 DEFAULT 'X'
*" VALUE(I_CLNT_SPEZ) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_CLNT_DEP) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_VARIANT) TYPE SLIS_VARI DEFAULT ' '
*" VALUE(I_OLD_ALV) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_CHECKKEY) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_TECH_NAMES) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_CWIDTH_OPT_OFF) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_SCROLL) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_NO_CONVEXIT) TYPE CHAR1 DEFAULT ' '
*" VALUE(I_LAYOUT_GET) TYPE CHAR1 DEFAULT ' '
*" EXPORTING
*" VALUE(E_LINE_NR) TYPE SYTABIX
*" VALUE(E_DREF)
*" TABLES
*" IT_SELFIELDS STRUCTURE SE16N_SELTAB OPTIONAL
*" IT_OUTPUT_FIELDS STRUCTURE SE16N_OUTPUT OPTIONAL
*" IT_OR_SELFIELDS TYPE SE16N_OR_T OPTIONAL
*" IT_CALLBACK_EVENTS TYPE SE16N_EVENTS OPTIONAL
*" EXCEPTIONS
*" NO_VALUES
*"----------------------------------------------------------------------

2010년 8월 14일 토요일

Bangalore in India





Articles: How to Upgrade from SAP R/3 to SAP ERP 6.0 (sap.info)

How to Upgrade from SAP R/3 to SAP ERP 6.0

http://en.sap.info/update_upgrade_erp6-ehp5/37860

2010년 6월 15일 화요일

URL: SAP related CV / resume

http://www.sapdev.co.uk/jobs/cvhome.htm

2010년 6월 3일 목요일

RH_GET_POSITION_TAB

RH_GET_POSITION_TAB : 겸직 정보 가져오는 함수

Pattern for FM RH_GET_POSITION_TAB - RH GET POSITION TAB Associated Function Group: RHPR
Released Date: Not Released CALL FUNCTION 'RH_GET_POSITION_TAB' "
EXPORTING
getperson = " person-pernr
getbegda = " plog-begda
getendda = " plog-endda
TABLES
position_tab = " hri_position_tab
EXCEPTIONS
NOTHING_FOUND = 1 "
. " RH_GET_POSITION_TAB


====================================
CALL FUNCTION 'RH_GET_POSITION_TAB'
EXPORTING
getperson = p0001-pernr
getbegda = p0001-begda
getendda = p0001-endda
TABLES
position_tab = get_position_tab
EXCEPTIONS
nothing_found = 1
OTHERS = 2.


=============================================
참고로 겸직입력하는 popup창

CALL FUNCTION 'HR_ASSIGN_MULTIPLE_POSITIONS'
EXPORTING
person_nr = p0001-pernr
org_assignment = p0001
begin_date = p0001-begda
end_date = p0001-endda
IMPORTING
object_type = altass_otype
object_id = altass_objid
object_prozt = altass_prozt
return = ass_return
TABLES
position_tab_import_old = old_postab
position_tab_import_new = new_postab
position_tab_export = new_ass_postab.

2010년 5월 26일 수요일

Function: K_HR_COSTCENTER_GETDETAIL

Cost Center Master Data for HR

Function: K_HR_COSTCENTER_GETDETAIL

2010년 5월 19일 수요일

Infotype Sort Order

https://forums.sdn.sap.com/thread.jspa?threadID=1326336

==============================================================

My boss has saved my ass - she's sorted it.

The way to solve this problem is as follows:-

1) Using transaction SE80 Copy screen 3000 of module pool MP007100 and make it screen 3008.

2) Next go to the IMG section
Personnel Management ---> Personnel Administration ---> Customizing User Interfaces --->
Change Screen Modifications.
Press the "Position" button and enter "MP007100" in the module and green tick.
If an entry for screen 3000 for MP007100 doesn't exist you may need to create it but make sure for that entry in the ALternative Screen you enter 3008.
This basically tells the system to use screen 3008 rather than the default 3000 screen supplied by SAP for MP007100.

3) Next a new value range entry was created for domain SRTPS - Accessed via table T582A using SE12 or using SE12 select the Domain radio button and enter in SRTPS.

Fix Value Short Description
======= =============
4 In desc. order by 'To' data, in asc. order by subtype

4) Finally the program FP50PE00 is modified as follows:-

FORM GET_NEXT_INFOTYP USING GNT_KEY GNT_NUMBER GNT_PS

...original code

CASE SIN-OPTION.
WHEN SPACE.
SORT PSINDEX BY PERNR SUBTY OBJPS SEQNR SPRPS ASCENDING
BEGDA DESCENDING ENDDA DESCENDING.
WHEN '1'.
SORT PSINDEX BY BEGDA DESCENDING
PERNR SUBTY OBJPS SEQNR ASCENDING.
WHEN '2'.
SORT PSINDEX.
WHEN '3'. "QNUK073087
SORT PSINDEX BY BEGDA ASCENDING "QNUK073087
PERNR SUBTY OBJPS SPRPS SEQNR ASCENDING. " -"-
*{ INSERT UDVK902820 1
* SL 11/05/09: this is an interruption to the infotype display control
* determined by T582A. Going to add a new sort
WHEN '4'.
SORT PSINDEX BY ENDDA DESCENDING
PERNR SUBTY OBJPS SEQNR ASCENDING.
*} INSERT
ENDCASE.

* ... original code

ENDFORM.


Similar changes are also done to
FORM SELECT_INFOTYP USING SIN_PERNR SIN_INFTY SIN_SUBTY SIN_OBJID
SIN_BEGDA SIN_ENDDA
SIN_OPTION SIN_COUNT.

FORM SELECT_INFOTYPE USING SEI_PERNR SEI_INFTY SEI_SUBTY SEI_OBJID
SEI_BEGDA SEI_ENDDA
SEI_OPERA SEI_OPTION
SEI_COUNT.

2010년 5월 6일 목요일

CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'

http://forums.sdn.sap.com/thread.jspa?messageID=8457849#8457849


The CONTENT_BIN parameter is the binary PDF data.

I have something like the code below. The GS_JOB_OUTPUT_INFO-OTFDATA comes from the SmartForm function module.

DATA: ls_otf TYPE itcoo,
ls_pdf TYPE solisti1.

* convert OTF data to PDF
LOOP AT gs_job_output_info-otfdata INTO ls_otf.
CONCATENATE ls_otf-tdprintcom ls_otf-tdprintpar
INTO ls_pdf.
APPEND ls_pdf TO lt_content_txt.
ENDLOOP.
CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
EXPORTING
format_src = 'OTF'
format_dst = 'PDF'
CHANGING
transfer_bin = lv_transfer_bin
content_txt = lt_content_txt
content_bin = lt_content_bin
objhead = lt_objhead
len = lv_len
EXCEPTIONS
err_conv_failed = 1
OTHERS = 2.


=====================================================
Re: Convert Sapscript to PDF
Posted: Nov 16, 2005 4:24 AM in response to: Laura Portal Reply

Hi,

Are you sure that you used those things which I mentioned?

* Setting the options
w_options-tdcopies = 1 ."Number of copies
w_options-tdnoprev = c_x."No print preview
w_options-tdgetotf = c_x."Return of OTF table
w_options-tddest = c_locl."Spool: Output device

* Opening the form
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = c_form
device = c_printer
language = sy-langu
OPTIONS = w_options
IMPORTING
RESULT = w_res.

=====================================================

Re: Convert Sapscript to PDF
Posted: Nov 15, 2005 1:04 PM in response to: Laura Portal Reply

Have a look at these FM also

CONVERT_OTFSPOOLJOB_2_PDF ==== converts a OTF spool to PDF (i.e. Sapscript document)
SX_OBJECT_CONVERT_OTF_PDF ==== Conversion From OTF to PDF (SAPScript conversion)

2010년 4월 22일 목요일

Test (from my Iphone)

Hello! world! :)

2010년 3월 12일 금요일

Shift Plan - HR_READ_TIMEDATA_PSP

FUNCTION hr_read_timedata_psp.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(BEGIN_DATE) LIKE SY-DATUM DEFAULT SY-DATUM
*" VALUE(END_DATE) LIKE SY-DATUM DEFAULT SY-DATUM
*" VALUE(PERSON_ID) LIKE OBJEC-OBJID
*" VALUE(PERSON_TYP) LIKE OBJEC-OTYPE DEFAULT 'P'
*" VALUE(RP_BUILD_PSP_ERROR) DEFAULT SPACE
*" TABLES
*" PERS_AVAIL STRUCTURE PDPSP
*" EXCEPTIONS
*" NO_CAPACITY_AVAILABLE
*" NO_INTEGRATION_ACTIV
*" TIMEINFO_ERROR
*"----------------------------------------------------------------------

2010년 2월 26일 금요일

SAP Program

REKH0004 - SAP 그래픽 데모 프로그램
RGUGBR00 - Substitution/Validation utility
RHGRENZ0 - 오브젝트 한계 결정
RHGRENZ1 - 신규 종료일 설정
RHGRENZ2 - 정보 유형 한계 결정
RKCTSEAR - 프로그램 내 문자열 탐색
RPR_ABAP_SOURCE_SCAN - ABAP 레포트 소스 탐색
RPUAUD00 - HR 인포타입 데이타의 로그 변경
RPUAUDDL - HR 인포타입 데이타에서 로그된 변경사항 삭제
RPUDELPN - 사원번호 완전히 삭제
RPUP1D00 - 파일 PCL1에서 개별레코드 조회 및 삭제
RPUP2D00 - 데이타베이스 PCL2에서 단일레코드 조회 및 삭제
RPUP3D00 - 파일 PCL3에서 단일레코드 조회 및 삭제
RPUP4D00 - 파일 PCL4에서 단일레코드 조회 및 삭제
RSBDCBTC - Batch 입력에 대한 유틸리티 레포트
RSBDCDRU - Batch 입력:세션 내용 인쇄
RSBDCOS0 - OS 명령어 실행( SYSLOG 및 추적파일에 로그 )
RSBDCSUB - Batch Input : Process All Sessions
RSBTCDEL - Batch 작업 삭제
RSINCL00 - ABAP 프로그램 참조 리스트
RSORAREL - Oracle 버젼 점검
RSPARAM - Profile 파라미터 값 조회
RSPO0041 - Old Spool Request 삭제
RSRSCAN1 - 프로그램 소스코드에서 문자열 찾기
RSSNAPDL - 짧은 덤프의 테이블 SNAP에 대한 재구성프로그램
RSTXFCON - SAPscript: 서식에 대한 페이지 포맷 변환
RSTXSCRP - SAPscript를 데이타세트로 export / SAPscript를 데이타세트에서 import
RSTXTRAN - Correction에 SAPscript 텍스트전송
RSUSR001 - 정보 시스템 권한
RSUSR002 - 사용자 점검
RSUSR003 - 전체 클라이언트의 사용자 SAP* 및 DDIC의 비밀번호 점검
RSUSR009 - 중요 권한이 있는 사용자 리스트
RSUSR006 - 잘못된 로그온에 의해 잠겨진 사용자마스터레코드의 리스트
RSWBO052 - 오브젝트디렉토리엔트리 변경
RSWBO060 - 전송 요청에서 오브젝트 포함

2010년 2월 21일 일요일

Additional Functions for Authorization Checks

Additional Functions for Authorization Checks
In this section you can find information on the most important reports that play a role for mySAP HR in the context of authorizations.
See also:
Report RHPROFL0
Report RHBAUS00 (Regeneration INDX for Structural Authorization)
Report RHBAUS01 (Output of Views on Objects in the Structural Authorization)
Report RHBAUS02 (Check and Compare T77UU (User Data in SAP Memory))
Report RPUACG00 (Code Generation: HR Infotype Authorization Check)
Report RHUSERRELATIONS (Display User Assignments)

Troubleshooting Authorization Problems

Troubleshooting Authorization Problems

Use

The procedures described in this section are designed to help you analyze problems that arise in connection with authorizations.

Determining minimum authorization

You can use the following two procedures to determine which authorizations a user requires to carry out a transaction:

Set up authorizations for the relevant transaction and for the SU53 transaction for the user. Then call up the transaction and wait until the authorization check denies you access. Finally, use the SU53 transaction to see what type of authorization check was carried out. Add the missing authorization and repeat the process. This procedure is simple but can be fairly lengthy.
Start an authorization trace using the ST01 transaction and carry out the transaction with a user who has full authorizations. On the basis of the trace, you can see which authorizations were checked.


This procedure generally works well. However, sometimes the result is very surprising because certain programs can and do ignore some authorization checks by using preliminary checks and buffered results. In such cases, these methods are not very effective. You can recognize these cases because certain fields of the corresponding programs are specified with * or DUMMY at some point of the authorization check.

Analyzing authorization problems in an unknown program

The most frequently used method to analyze authorization problems in an unknown program involves you setting the Debugger breakpoints to the AUTHORITY-CHECK and MESSAGE commands. Then execute the program and analyze its behavior.

Determining all the authorizations a user has for an authorization object

When troubleshooting, it is often helpful to find out all the authorizations a specified user has for a specific authorization object. A simple method of reading these authorizations as raw data from the user master record is to execute the GET_AUTH_VALUES function module in the SUSR function group. Use the SE37 transaction or SE80 in test mode to do so. The result table is not formatted for output, but is very compact and easy to understand for authorization experts.

Analyzing an authorization problem that occurs for only one user

It is often the case that a certain authorization problem occurs for only one specific user. This kind of authorization problem generally affects users with no Debugging authorization. If you want to assign a user Debugging authorization without changing the HR authorizations, you can add the S_A.DEVELOP authorization profile (if available) to the user’s authorization profiles. In production systems, note that changes such as these to authorizations enable users (with relevant knowledge of the development environment) to access any system data easily (especially in other clients).

Analyzing an authorization problem that occurs for only one personnel number

Authorization problems that occur for a single personnel number are caused almost always by incorrect settings in the environment of the P_PERNR authorization object.

Authorization problems that are user-independent and occur for a single personnel number are caused almost always by a specialized organizational assignment (or even an incorrect organizational assignment). In this case, you should check the data of the Actions (0000) and Organizational Assignment (0001) infotypes and the relationships with the organizational structure (actively integrated systems) thoroughly.

Analyzing authorization problems in connection with locking and unlocking infotype records

Authorization problems that occur in connection with locking and unlocking infotype records are often caused by the CHECK_AUTH_SET_ENQ (SAPFP50M) form.

Localizing the cause of authorization problems after the import of HR Support Packages

The majority of code for the HR Master Data authorization check is localized in the CL_HRPAD00AUTH_CHECK_STD and CL_HRPAD00AUTH_CHECK_FAST classes, the SAPFP50P report, and the HRAC function group. You can also find smaller parts of code in the SAPDBPAP, SAPDBPNP, and SAPFP50M reports. If authorization problems are caused by HR Support Packages, a good place to start looking for changes to the code is in the above-mentioned classes and reports.

Useful questions for solving authorization problems

Over 90% of SAP’s incoming messages about authorization problems are consulting problems. What is more, in many cases customers are convinced that an error is causing their problems when in fact the problem is due to a misunderstanding of the functions of the corresponding protection mechanism. When analyzing authorization problems, it is therefore important that you can answer the following questions:

What data (which infotype/subtype) did the user access and how (using which transaction or which function of a transaction)?
How did the system react (did it incorrectly allow or deny access)?
How should the system have reacted (should it have allowed or denied the user access)?
Which authorization main switches are set up in the system?
How are the authorizations for the activated authorization checks set up?
Are the data records of the Organizational Assignment infotype (0001) as they should be for the personnel number in question?

2010년 2월 19일 금요일

HR expert - article - Align SAP Time Management with Your Company’s Time Quota Requirements

Many organizations allow employees to exceed their annual leave entitlement quotas to a certain limit, but how do you regulate such quota modifications in SAP ERP? I’ll show you how to configure time quotas that surpass leave entitlement policies and ensure that additional leave time from one year is deducted properly for the subsequent year. Conversely, if your organization doesn’t subtract surplus leave entitlement quotas from one year to the next, I’ll describe how to avoid penalizing employees in SAP ERP for the following year.

Typically, the HR department processes time quotas as part of its year-end activities or at the beginning of each year through time evaluation reports RPTIME00 (for positive time) or RPTQTA00 (for negative time). However, you can use RPTIME00 for both positive and negative time. Some organizations use RPTQTA00 if they perform their time evaluation using the payroll driver instead of RPTIME00. In both situations, your time quotas must be accurate to avoid erroneous time data. I’ll discuss the configuration steps necessary to address the following two business scenarios:

1. A company allows employees to exceed leave entitlement to a certain limit and doesn’t carry over the time quota to the following year

2. A company allows employees to exceed leave entitlement to a certain limit and deducts the additional time used from the following year’s leave entitlement quota

The configuration steps I describe in this article are pertinent to R/3 Release 4.0B and onwards and all SAP ERP releases. Apply these time quota adjustments as needed or on an annual basis, per your company’s requirements

2010년 2월 16일 화요일

ScriptX Documentation

http://www.meadroid.com/scriptx/indexdocs.asp

2010년 2월 10일 수요일

/561 처리 방법

1. /561을 당월 반제처리시
PCR "ACTIO X04A *Import claim from previous period"를 수정

[수정전]
000010 AMT=L /565ADDWTI/566ADDWTI/560ADDWTI/562*
000020 1 AMT=L /561ADDWTI/563SUBWTI/560SUBWTI/562
[수정후]
000010 AMT=L /565ADDWTI/566ADDWTI/560ADDWTI/562

2. 청구를 사원미지급계정으로 처리시 소급경우 반제한 청구금액을 미지급급여로 산입처리

BAdI 에서 계정수정

[sample code]

METHOD if_ex_smod_pcpo0001~exit_rpcipe00_001.
*소급시 청구'/561은 미지급비용을 처리해서 넘김
* 청구발생 월이 이미 반제처리하여, 소급되었다 하더라도 다음 급여 전표에 여향을 주어서는 안됨.
IF item-komok = '5140' AND result-srtza = 'P'.
komok_mod = '5130'.
ENDIF.
ENDMETHOD.


2010년 2월 9일 화요일

for posting to customer accounts

"Define Symbolic Accounts"
1.D for employee customer accounts

"Assign Customer Accounts"
1. Enter the required chart of accounts.
2. Choose Rules to make settings for the posting procedure Personnel posting to customers (HRD).
a) Flag the Debit/Credit indicator, only if you want to book debit and credit to different accounts. Since, within Posting to Accounting only summarized documents are posted, it is not recommended that you flag this indicator.
b) If you flag the indicator Employee group, an additional column, Employee group appears in account assignment. It only has to be flagged if you want to post to a symbolic account for a specific employee grouping. For this reason, you must have flagged the MG indicator for the relevant symbolic accounts in the step Define Symbolic Accounts
3. Choose Posting key. Enter the posting key for postings to customers or copy the default values (01 for debit postings and 11 for credit postings).
4. Choose Accounts. Make the corresponding entries in the table T030.
a) If you want to assign a fixed account to a symbolic account, and, if required, an employee grouping, enter the number of the customer account in the Acco column.
b) If you want to assign an employee account to a symbolic account, and, if required, an employee grouping, enter the relevant key (see table, below) in the Acco column.
Personnel no. in field (customer master d.) Entry in acct field (T030)
Personnel number *0002
Search term *0001
Telephone 2 *0003
Data line *0004
Teletex number *0005

2010년 2월 8일 월요일

SAP Reports

http://sap.ionelburlacu.ro/abap/sap2/SAP_Reports.html

Source Code

http://sap.ionelburlacu.ro/abap/sap2/Source_Code.html

SAP_Functions

http://sap.ionelburlacu.ro/abap/sap2/SAP_Functions.html

SAP Reports

REKH0004 - SAP demo program that shows how to do 2D, 3D, and 4D graphics.
RGUGBR00 - Substitution/Validation utility
RHGENZ0/HRGRENZ2 - Notes RHGRENZ0/2 will abend if there are any inconsistencies between PD and PA (i.e. people in a different controlling area than the position they belong to).
RHGRENZ0 - Delimit IT1000 and related 1001s. Program will delete any 1001 infotypes whose start date is after the delimit date.
RHGRENZ1 - Extend the end date on delimited records. Very useful when you delimit a bunch of records incorrectly, and need to change the end date.
RHGRENZ2 - Delimit IT1001 only.
RKCTSEAR - Search source code for up to two strings. Also see RSRSCAN1 and RPR_ABAP_SOURCE_SCAN.
RPDTRA00 - List all HR transactions.
RPR_ABAP_SOURCE_SCAN - Search ABAP code for a string. Has many more options for selecting the ABAPs to search than RSRSCAN1 or RKCTSEAR.
RPUAUD00 - HR Report to list all logged changes 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/10 - View/Delete data from PCL1 Cluster
RPUP2D00/10 - View/Delete data from PCL2 Cluster
RPUP3D00/10 - View/Delete data from PCL3 Cluster
RPUP4D00/10 - View/Delete data from PCL4 Cluster
RSABAPIV - Mass print/display of ABAP/4 help text
RSAVGL00 - Table adjustment across clients
RSBDCBTC - Submit a BDC job with an internal batch number and wait for the end of the batch input session.
RSBDCDRU - Prints the contents of a Batch Input session. No options for error transactions only.
RSBDCOS0 - Execute UNIX commands. Looks similar to the old SAPMSOS0 program that disappeared in 3.0
SBDCSUB - Release batch input sessions automatically
RSBTCDEL - Clean the old background job records
RSCLTCOP - Copy tables across clients
RSDBCREO - Clean batch input session log
RSINCL00 - Extended program list
RSORAREL - Get the Oracle Release
RSPARAM - Display all instance parameters
RSPO0041 - Removing old spooling objects
RSRSCAN1 - Search source code for a given string. Will also search includes. Also see RKCTSEAR and RPR_ABAP_SOURCE_SCAN.
RSSNAPDL - Clean the old ABAP error dumps
RSTBSERV - Compare a contents of a table between clients
RSTXFCON - Converts SAPScript page formats
RSTXSCRP - Save a SAPScript layout set to disk, and load it back into SAP.
RSTXSCRP - Transport SAPscript files across systems
RSTXSCRP - Upload and download SAPScript layout sets
RSTXTPDF4 - Pass the spool number of a report's output to this program to have the output converted to PDF format.
RSTXTRAN - Add standard texts to a transport so they can be moved between systems.
RSUSR003 - Check the passwords of users SAP* and DDIC in all clients
RSUSR006 - List users last login
RSWBO052 - Change development class of a sapscript (provided by Alan Cecchini)
RSWBO060 - put objects into a request and transport it to any other system

2010년 1월 13일 수요일

ZLK0: from XLK0

--------------------------------------------------------------------------------
ZLK0 001 COM *과거급여 마이그레이션********************
ZLK0 002 COM Payroll Account Transfer T558B,D
ZLK0 003 COM Initialization INTERNATIONAL
ZLK0 004 PGM TRN Program type for payroll
ZLK0 005 UPD YES Update database (YES/NO)
ZLK0 006 OPT INFT Read used infotypes only
ZLK0 007 OPT TIME Import all time infotypes
ZLK0 008 COPY XBD0 Edit basic data
ZLK0 009 RFRSH IT Delete IT after editing basic data
ZLK0 010 IMPRT L Import last payroll result
ZLK0 011 TRANS 558D Transfer payroll account T558A INTERNA.
ZLK0 012 BENTR CHK Transfer benefit wage types to BENTAB
ZLK0 013 PRINT NP IT Sort table IT
ZLK0 014 _MIG1 *IT보정 - BT생성하기위함
ZLK0 015 P0009 Z050 GEN NOAB *은행정보
--------------------------------------------------------------------------------
Z050***** DELIMI * AMT= /562AMT?0
Z050******
Z050*****> DVAKEYBNKSA
Z050*****> * DAMT= BETRGAMT?0
Z050*****> * * DNUM= ANZHLNUM?0
Z050*****> * * *
Z050*****> * * > AMT= /560MULTI NAA AMT/100.00AMT< /562ZERO= N NEXTR A Z050*****> * * > AZGCY Z0509
Z050*****> * > ZAMTS /564AMT< /562GCY Z0509 Z050*****> 0 ZGCY Z0509 "ZPAYTP 9
--------------------------------------------------------------------------------
Z0509**** DZERO=&P9 ADDWT&P9 VAKEYZLSCH
Z0509***** DAMT= /564AMT?0
Z0509***** * AMT=& P9 NEXTR A COMPARE LIMIT FOR BANK TRANSF
Z0509***** * ADAMT?IGRUEB
Z0509***** * * BTREC /559ADDWT /559ELIMI * SUBWT /562
Z0509***** * < adnum="&"> ZERO= N NEXTR A TRANSF
Z0509***** * < > A BTREC /559ADDWT /559ELIMI * SUBWT /562
Z0509***** > AMT=& P9 NEXTR A COMPARE LIMIT FOR BANK TRANSF
Z0509***** > ADAMT?IGRUEB
Z0509***** > * BTREC /558ADDWT /558ELIMI * SUBWT /562
Z0509***** > <> < adnum="&"> < * Z0509***** > < > ZERO= N NEXTR A TRANSF
Z0509***** > < > A BTREC /558ADDWT /558ELIMI * SUBWT /562
Z0509****2 AMT=& P9 ADDWT /557ELIMI * SUBWT /562
--------------------------------------------------------------------------------
X05D***** DPPPAR A LEAVING IN THE PERIODE
X05D****** DPPPAR F LEAVING AT END OF PERIODE
X05D****** * DPPPAR R NOT ACT.=LEAVING AT 1. OF PER.
X05D****** * *
X05D****** * R NUM=1 ADDWT&MY10ZERO= N FORCE BANK TRANSFER
X05D****** F NUM=1 ADDWT&MY10ZERO= N FORCE BANK TRANSFER
X05D*****A NUM=1 ADDWT&MY10ZERO= N FORCE BANK TRANSFER
--------------------------------------------------------------------------------
ZLK0 016 PIT XCOP GEN NOAB Copy wage types to RT
--------------------------------------------------------------------------------
XCOP***** ELIMI * ADDWTE*
--------------------------------------------------------------------------------
ZLK0 017 SORT RT Sort results table
ZLK0 018 PRINT NP RT Display table RT
ZLK0 019 SETCU Prepare CRT (old results)
ZLK0 020 ADDCU P30 Update cumulated values
ZLK0 021 PRINT NP CRT Table of cumulated values (CRT)
ZLK0 022 EXPRT KR *xport result (DB: PCL2 / CL: RX)->KR로


*&---------------------------------------------------------------------*
*& Form fu_zmig1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fu_mig1.
LOOP AT it.
IF ( it-lgart BETWEEN '1000' AND '9999' ) OR it-lgart = '/001' OR it-lgart = '/003' OR it-lgart = '/BR1'.
it-abart = '3'.
ELSE.
it-abart = '*'.
ENDIF.
MODIFY it.
ENDLOOP.
ENDFORM. "fu_zmig1

2010년 1월 11일 월요일

2010년 1월 10일 일요일

2010년 1월 4일 월요일

개인의 인건비를 프로젝트별로 정산하려한다.

[요구사항]
개인의 인건비를 프로젝트별로 정산하려한다.

[HR]
월중에 조직이 변경된 직원의 경우 인건비가 각 코스트센터별로 일할계산되어 정리되어있다.

급여전표에서 해당 정보를 추출할 수 있다.


PPOIX 급여결과라인 인덱스 -> 전기라인 - 직원별, 임금유형별 금액
PPDHD 회계로 전송: 전표헤더 -> 전표전기일, 회계전표의 연결고리
PPDIT 회계로 전송: HR IDOC의 라인 -> 코스트센터

기호계정과 연결된 회계계정은 다른 테이블을 참고한다.
T030 표준계정테이블 -> 거래키 (HRC, HRF, HRA)

user-exit - Google 검색

user-exit - Google 검색

An ABAPer: HR-ABAP function modules

An ABAPer: HR-ABAP function modules

abaphr.com

abaphr.com

SAPFunctional.com - HCM (HR) Tutorials

SAPFunctional.com - HCM (HR) Tutorials

An ABAPer: HR-ABAP function modules

An ABAPer: HR-ABAP function modules

An ABAPer: HR-ABAP function modules

An ABAPer: HR-ABAP function modules

Knowing the User-exit by giving function exit

REPORT ztest_notepad.
DATA: BEGIN OF it_modsap OCCURS 0,
name TYPE modsap-name,
typ TYPE modsap-typ,
member TYPE modsap-member,
END OF it_modsap.
TYPE-POOLS:slis.
DATA:wa_layout TYPE slis_layout_alv.
DATA:it_sort TYPE slis_t_sortinfo_alv.
DATA:wa_sort LIKE LINE OF it_sort.
PARAMETERS:p_exit TYPE modsap-member.
SELECT * FROM modsap INTO TABLE it_modsap WHERE member = p_exit.
READ TABLE it_modsap INDEX 1.
SELECT * FROM modsap INTO TABLE it_modsap WHERE name = it_modsap-name.
wa_layout-colwidth_optimize = 'X'.
wa_sort-fieldname = 'NAME'.
wa_sort-tabname = 'IT_MODSAP'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'MODSAP'
is_layout = wa_layout
it_sort = it_sort
TABLES t_outtab = it_modsap.