본문 바로가기

Dev

[SAP] SE38 공부

반응형

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.

 

코드 설명

  1. 프로그램 목적: 사원 번호(PERNR), 이름(ENAME), 조직 단위(ORGEH), 직책(PLANS)을 조회하여 ALV 그리드로 출력.
  2. 논리 데이터베이스: PNP를 사용하여 HR 데이터를 효율적으로 조회.
  3. 인포타입: PA0001(조직배정)과 PA0002(개인 데이터)를 사용.
  4. 매크로: RP_PROVIDE_FROM_LAST를 사용하여 최신 인포타입 데이터를 조회.
  5. ALV 출력: REUSE_ALV_GRID_DISPLAY 함수를 활용해 데이터를 표 형태로 출력.
  6. 구성 요소:
    • Dictionary 구조: 출력 테이블 ZHR_EMPLOYEE 정의.
    • 서브루틴: GET_DATADISPLAY_ALV로 코드 모듈화.
    • 이벤트: START-OF-SELECTION에서 데이터 조회 및 출력 시작.

실행 방법

  1. SE38에서 프로그램 이름(예: ZHR_EMPLOYEE_REPORT)으로 새 프로그램을 생성.
  2. 위 코드를 복사하여 붙여넣고 활성화.
  3. 실행(F8)하여 PNP 선택 화면에서 원하는 사원 범위와 날짜를 입력.
  4. 결과로 사원 데이터가 ALV 그리드에 표시됨.

추가 학습 포인트

  • 디버깅: SE38에서 F5/F6를 사용해 데이터 조회 로직을 단계별로 확인.
  • 에러 처리: SY-SUBRC를 활용한 오류 처리 추가 가능.
  • 확장: 다른 인포타입(예: PA0008, 급여 데이터) 추가 조회 가능.
반응형