반응형
SE38은 SAP ECC6.0에서 ABAP 프로그램을 생성, 수정, 실행, 디버깅하는 데 사용되는 주요 트랜잭션으로, HR 모듈에서도 자주 활용됩니다. SE38에서 학습할 수 있는 주요 내용은 ABAP 프로그래밍과 관련된 다양한 기능과 기술로, 특히 HR 모듈과 연계된 경우 아래와 같은 항목들을 중심으로 학습할 수 있습니다. 이를 표로 정리하여 설명과 HR 모듈에서의 활용 예시를 제공하겠습니다.
오브젝트 | 설명 | 예시 |
Dictionary 구조 | 데이터베이스 테이블, 뷰, 데이터 요소, 도메인 등 ABAP 데이터 사전에서 정의된 데이터 구조입니다. HR 모듈에서는 인사 데이터 저장에 사용됩니다. | PA0001 (조직배정 데이터를 저장하는 인사관리 테이블) |
클래스 (정의) | 객체 지향 프로그래밍을 위한 클래스 정의로, 메서드와 속성을 포함합니다. HR 모듈에서는 비즈니스 로직 처리에 사용됩니다. | CL_HRPA_INFOTYPE_0001 (인사 데이터 처리용 클래스) |
필드 | 테이블이나 프로그램 내에서 데이터를 저장하는 개별 데이터 요소입니다. HR에서는 사원 번호, 이름 등이 필드에 해당합니다. | PERNR (사원 번호 필드, PA0001 테이블에 정의) |
매크로 | 반복적인 코드를 간소화하기 위해 정의된 코드 블록입니다. HR에서는 복잡한 인포타입 조회 로직에 자주 사용됩니다. | RP_PROVIDE_FROM_LAST (최신 인포타입 데이터를 조회하는 매크로) |
이벤트 | 프로그램 실행 중 특정 시점에서 실행되는 코드 블록입니다. HR에서는 데이터 처리 전/후에 로직을 추가할 때 사용됩니다. | INITIALIZATION (보고서 초기화 시 실행) |
PBO 모듈 | Process Before Output 모듈로, 화면 출력 전에 실행되어 화면 요소를 설정합니다. HR에서는 입력 화면 초기화에 사용됩니다. | MODULE PBO_0100 OUTPUT (화면 0100의 초기 설정) |
PAI 모듈 | Process After Input 모듈로, 사용자 입력 후 실행되어 입력 데이터를 처리합니다. HR에서는 입력 검증에 사용됩니다. | MODULE PAI_0100 INPUT (화면 0100의 입력 처리) |
서브루틴 | 재사용 가능한 코드 블록으로, 특정 기능을 수행합니다. HR에서는 데이터 처리나 계산 로직에 사용됩니다. | PERFORM CALCULATE_SALARY (급여 계산 서브루틴) |
화면 | 사용자 인터페이스로, Dynpro 화면을 통해 입력/출력을 처리합니다. HR에서는 인사 데이터 입력 화면에 사용됩니다. | SCREEN 0100 (사원 데이터 입력용 Dynpro 화면) |
GUI 상태 | 프로그램의 GUI 구성 요소(메뉴, 툴바 등)를 정의합니다. HR에서는 사용자 친화적인 인터페이스 구성에 사용됩니다. | GUI STATUS 'MAIN' (메인 메뉴와 툴바 정의) |
GUI 제목 | 프로그램 화면의 제목을 정의합니다. HR에서는 화면의 용도를 나타내는 제목으로 사용됩니다. | SET TITLEBAR 'TIT1' (화면 제목 설정) |
트랜잭션 | 프로그램을 실행하거나 특정 기능을 호출하는 코드입니다. HR에서는 인사 데이터를 관리하는 트랜잭션에 사용됩니다. | PA30 (인사 데이터 유지보수 트랜잭션) |
Include | 공통 코드를 별도의 프로그램 단위로 포함시켜 재사용합니다. HR에서는 공통 로직이나 상수를 정의하는 데 사용됩니다. | INCLUDE ZHR_COMMON (공통 HR 로직 포함) |
학습 내용 | 설명 | HR모듈에서의 예시 |
ABAP 프로그램 생성 및 수정 | SE38에서 새로운 ABAP 보고서 프로그램을 작성하거나 기존 프로그램을 수정합니다. 프로그램 구조, 변수 선언, 로직 작성 방법을 학습합니다. | 사원 데이터를 조회하는 보고서 프로그램 작성 (예: ZHR_EMPLOYEE_REPORT) |
데이터 조회 및 처리 | HR 테이블(예: PAxxxx, PBxxxx)에서 데이터를 읽고 처리하는 로직을 작성합니다. SELECT 문과 HR 매크로 사용법을 학습합니다. | PA0001에서 조직배정 데이터를 조회하여 보고서 출력 |
HR 인포타입 처리 | HR 모듈의 인포타입 데이터를 읽고 업데이트하는 방법을 학습합니다. HR_READ_INFOTYPE 함수나 매크로 사용이 포함됩니다. | HR_READ_INFOTYPE로 사원 기본 데이터(인포타입 0002) 조회 |
논리 데이터베이스(LDB) | HR 모듈에서 논리 데이터베이스(예: PNP, PCH)를 사용하여 데이터를 효율적으로 조회하는 방법을 학습합니다. | LDB PNP를 사용해 사원 데이터를 필터링하여 출력 |
ALV 보고서 작성 | SAP List Viewer(ALV)를 사용해 데이터를 표 형태로 출력하는 방법을 학습합니다. HR 데이터의 시각적 표현에 유용합니다. | 사원 급여 데이터를 ALV 그리드로 출력 (REUSE_ALV_GRID_DISPLAY) |
디버깅 기술 | SE38에서 디버깅 모드를 활용해 프로그램 오류를 분석하고 수정하는 방법을 학습합니다. | 급여 계산 로직에서 잘못된 값을 추적하기 위해 디버깅 모드 사용 |
서브루틴 및 모듈화 | 재사용 가능한 서브루틴을 작성하고 코드를 모듈화하여 유지보수성을 높이는 방법을 학습합니다. | 사원 데이터 검증 로직을 서브루틴(PERFORM CHECK_EMPLOYEE)으로 분리 |
이벤트 처리 | ABAP 프로그램의 이벤트(INITIALIZATION, START-OF-SELECTION 등)를 활용해 실행 흐름을 제어하는 방법을 학습합니다. | INITIALIZATION에서 HR 데이터 조회를 위한 기본값 설정 |
Include 프로그램 사용 | 공통 코드를 Include 프로그램으로 분리하여 재사용하는 방법을 학습합니다. | 공통 HR 상수 및 로직을 ZHR_COMMON_INCLUDE에 정의 |
BAPI 및 함수 모듈 사용 | HR 모듈에서 제공하는 BAPI(예: BAPI_EMPLOYEE_ENQUEUE)나 함수 모듈을 호출하여 데이터를 처리하는 방법을 학습합니다. | BAPI_EMPLOYEE_CHANGE로 사원 데이터 수정 |
에러 처리 및 메시지 관리 | 프로그램 실행 중 발생하는 에러를 처리하고 사용자에게 메시지를 출력하는 방법을 학습합니다. | 잘못된 사원 번호 입력 시 메시지 클래스(MESSAGE-ID)로 오류 표시 |
트랜잭션 연계 | SE38 프로그램을 트랜잭션 코드에 연결하여 사용자 접근을 용이하게 하는 방법을 학습합니다. | SE38 보고서를 ZHR_REPORT 트랜잭션으로 등록 |
화면 개발과의 연계 | SE38 프로그램에서 Dynpro 화면(SE51)과 연계하여 사용자 입력을 처리하는 방법을 학습합니다. | 사원 데이터 입력 화면과 SE38 프로그램 연계 |
학습 팁
- HR 모듈 초점: HR 모듈에서는 인포타입(PA0000~PA9999), 논리 데이터베이스(PNP, PCH), 그리고 HR 관련 함수 모듈(예: HR_INFOTYPE_OPERATION)에 익숙해지는 것이 중요합니다.
- 실습 중심: SE38에서 간단한 보고서 프로그램(예: 사원 목록 조회)을 작성하며 데이터 조회, ALV 출력, 디버깅을 연습하세요.
- 매뉴얼 활용: SAP 온라인 도움말(트랜잭션 SR13 또는 SAP Help Portal)에서 HR 관련 ABAP 예제를 참고하세요.
- 샘플 프로그램: SAP 시스템 내 샘플 프로그램(예: RPCALCK0 - 한국 급여 계산)을 분석하여 HR 모듈의 실제 로직을 학습하세요.
SE38은 ABAP 개발의 핵심 도구로, 위 내용을 단계적으로 학습하면 HR 모듈에서의 프로그래밍 역량을 크게 향상시킬 수 있습니다.
REPORT ZHR_EMPLOYEE_REPORT.
* 논리 데이터베이스 선언
TABLES: PERNR.
* 인포타입 선언
INFOTYPES: 0001, 0002.
* ALV 관련 데이터 선언
TYPE-POOLS: SLIS.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gt_outtab TYPE TABLE OF ZHR_EMPLOYEE,
gs_outtab TYPE ZHR_EMPLOYEE.
* 출력 구조 정의
TYPES: BEGIN OF ZHR_EMPLOYEE,
PERNR TYPE PA0001-PERNR, " 사원 번호
ENAME TYPE PA0002-ENAME, " 사원 이름
ORGEH TYPE PA0001-ORGEH, " 조직 단위
PLANS TYPE PA0001-PLANS, " 직책
END OF ZHR_EMPLOYEE.
* 프로그램 시작
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY_ALV.
* 데이터 조회 서브루틴
FORM GET_DATA.
DATA: ls_p0001 TYPE P0001,
ls_p0002 TYPE P0002.
GET PERNR.
CLEAR gs_outtab.
" 인포타입 0001(조직배정) 데이터 조회
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND = 1.
gs_outtab-PERNR = PERNR-PERNR.
gs_outtab-ORGEH = P0001-ORGEH.
gs_outtab-PLANS = P0001-PLANS.
ENDIF.
" 인포타입 0002(개인 데이터) 데이터 조회
RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND = 1.
gs_outtab-ENAME = P0002-ENAME.
ENDIF.
APPEND gs_outtab TO gt_outtab.
END-OF-SELECTION.
ENDFORM.
* ALV 출력 서브루틴
FORM DISPLAY_ALV.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
" 필드 카탈로그 설정
CLEAR gt_fieldcat.
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-seltext_m = '사원 번호'.
APPEND ls_fieldcat TO gt_fieldcat.
ls_fieldcat-fieldname = 'ENAME'.
ls_fieldcat-seltext_m = '사원 이름'.
APPEND ls_fieldcat TO gt_fieldcat.
ls_fieldcat-fieldname = 'ORGEH'.
ls_fieldcat-seltext_m = '조직 단위'.
APPEND ls_fieldcat TO gt_fieldcat.
ls_fieldcat-fieldname = 'PLANS'.
ls_fieldcat-seltext_m = '직책'.
APPEND ls_fieldcat TO gt_fieldcat.
" ALV 레이아웃 설정
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
" ALV 출력
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = gs_layout
IT_FIELDCAT = gt_fieldcat
TABLES
T_OUTTAB = gt_outtab
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
코드 설명
- 프로그램 목적: 사원 번호(PERNR), 이름(ENAME), 조직 단위(ORGEH), 직책(PLANS)을 조회하여 ALV 그리드로 출력.
- 논리 데이터베이스: PNP를 사용하여 HR 데이터를 효율적으로 조회.
- 인포타입: PA0001(조직배정)과 PA0002(개인 데이터)를 사용.
- 매크로: RP_PROVIDE_FROM_LAST를 사용하여 최신 인포타입 데이터를 조회.
- ALV 출력: REUSE_ALV_GRID_DISPLAY 함수를 활용해 데이터를 표 형태로 출력.
- 구성 요소:
- Dictionary 구조: 출력 테이블 ZHR_EMPLOYEE 정의.
- 서브루틴: GET_DATA와 DISPLAY_ALV로 코드 모듈화.
- 이벤트: START-OF-SELECTION에서 데이터 조회 및 출력 시작.
실행 방법
- SE38에서 프로그램 이름(예: ZHR_EMPLOYEE_REPORT)으로 새 프로그램을 생성.
- 위 코드를 복사하여 붙여넣고 활성화.
- 실행(F8)하여 PNP 선택 화면에서 원하는 사원 범위와 날짜를 입력.
- 결과로 사원 데이터가 ALV 그리드에 표시됨.
추가 학습 포인트
- 디버깅: SE38에서 F5/F6를 사용해 데이터 조회 로직을 단계별로 확인.
- 에러 처리: SY-SUBRC를 활용한 오류 처리 추가 가능.
- 확장: 다른 인포타입(예: PA0008, 급여 데이터) 추가 조회 가능.
반응형
'Dev' 카테고리의 다른 글
AI가 개발자를 대체한다? | 개발자 취업 전망과 생존 전략(유튜브 요약) (0) | 2024.07.09 |
---|---|
[Eclipse] 이클립스 레이아웃 초기화 (0) | 2020.06.12 |
[Tomcat] Removing obsolete files from server 에러 (0) | 2020.04.16 |
더 좋은 클래스 설계를 위해 알아야할 신뢰성, 확장성, 유지보수성을 가진 애플리케이션 (0) | 2020.03.03 |
더 좋은 클래스 설계를 위해 알아야할 프로그램 5대원칙 (0) | 2020.03.02 |