함수 및 모듈화

박재완·2025년 1월 25일

SAP ABAP (1 ~ 8일차)

목록 보기
4/8

1. Defining and Calling Subroutines

  • 서브루틴(Subroutine) 개요
    서브루틴은 FORMENDFORM 구문을 사용하여 정의되며, 프로그램 내에서 재사용 가능한 코드 블록입니다. 주로 반복적인 작업이나 특정 기능을 캡슐화하는 데 사용됩니다.

  • 특징

    • 프로그램 내에서만 사용 가능 (글로벌 사용 불가).
    • 간단한 모듈화를 위해 사용.
    • USINGCHANGING 키워드를 통해 매개변수를 전달.
  • 구문 및 예제:

    FORM calculate_sum USING p_num1 TYPE I
                               p_num2 TYPE I
                        CHANGING p_result TYPE I.
      p_result = p_num1 + p_num2.
    ENDFORM.
    
    " 서브루틴 호출
    DATA: lv_num1 TYPE I VALUE 5,
          lv_num2 TYPE I VALUE 10,
          lv_result TYPE I.
    
    PERFORM calculate_sum USING lv_num1 lv_num2 CHANGING lv_result.
    WRITE: / 'Sum:', lv_result.
    • USING: 입력 파라미터를 전달.
    • CHANGING: 출력 또는 결과 값을 반환.

2. Calling Function Modules

  • 함수 모듈(Function Module) 개요
    함수 모듈은 SAP에서 제공하는 Function Builder를 통해 생성되며, SAP 시스템 전역에서 호출 가능한 모듈화된 코드입니다.
    함수 모듈은 RFM(Remote Function Module)으로 확장 가능하며, 외부 시스템과 통신에도 사용됩니다.

  • 특징

    • 재사용 가능한 모듈로 설계.
    • IMPORTING, EXPORTING, CHANGING, TABLES 등의 매개변수를 사용.
    • 데이터베이스 조회, 외부 시스템 통신 등 복잡한 작업 처리에 적합.
  • 구문 및 예제:

    DATA: lv_output TYPE STRING.
    
    CALL FUNCTION 'FUNCTION_NAME'
      EXPORTING
        input_param = 'Value'
      IMPORTING
        output_param = lv_output
      EXCEPTIONS
        others = 1.
    
    IF sy-subrc = 0.
      WRITE: / 'Function executed successfully:', lv_output.
    ELSE.
      WRITE: / 'Error occurred.'.
    ENDIF.
    • EXPORTING: 함수에 입력값 전달.
    • IMPORTING: 함수의 출력값 받기.
    • EXCEPTIONS: 함수 실행 중 발생할 수 있는 예외 처리.
  • SAP 표준 함수 모듈 예제

    • 'BAPI_CUSTOMER_GETDETAIL': 고객 정보를 가져오는 SAP 표준 함수.
    • 'RFC_READ_TABLE': 테이블 데이터를 읽는 RFM.

3. Describing Business Application Programming Interfaces (BAPIs)

  • BAPI 개요
    BAPI는 SAP의 비즈니스 객체(BO)를 통해 외부 애플리케이션과 데이터를 상호작용할 수 있도록 하는 표준화된 인터페이스입니다.
    BAPI는 SAP 시스템 내에서 비즈니스 프로세스를 통합하거나 확장하기 위해 사용됩니다.

  • BAPI의 특징

    • SAP Business Object Repository (BOR)에 등록된 함수 모듈.
    • 외부 시스템과의 통신을 위한 표준화된 인터페이스 제공.
    • 데이터의 읽기/쓰기 및 트랜잭션 처리 지원.
  • BAPI의 주요 사용 사례

    1. 데이터 읽기:
      예: 고객 정보 가져오기 (BAPI_CUSTOMER_GETDETAIL).
    2. 데이터 작성:
      예: 판매 주문 생성 (BAPI_SALESORDER_CREATEFROMDAT2).
    3. 데이터 변경:
      예: 재고 데이터 업데이트 (BAPI_MATERIAL_SAVEDATA).
  • 구문 및 예제:

    DATA: lt_return TYPE TABLE OF bapiret2,
          lv_customer TYPE kunnr.
    
    CALL FUNCTION 'BAPI_CUSTOMER_GETDETAIL'
      EXPORTING
        customer = '000123'
      TABLES
        return = lt_return.
    
    IF sy-subrc = 0.
      LOOP AT lt_return INTO DATA(ls_return).
        WRITE: / ls_return-message.
      ENDLOOP.
    ELSE.
      WRITE: / 'Error calling BAPI.'.
    ENDIF.
    • TABLES: 메시지 또는 결과 값을 테이블 형태로 반환.
    • BAPI 실행 후 COMMIT WORK 또는 ROLLBACK WORK로 트랜잭션을 처리.
  • BAPI와 함수 모듈의 차이점

    • 함수 모듈: 내부적으로 SAP 시스템 내에서 사용.
    • BAPI: 외부 애플리케이션과의 상호작용을 위해 설계.

요약

  • 서브루틴: 프로그램 내부의 반복 작업을 캡슐화. 단순하고 빠르게 구현 가능.
  • 함수 모듈: 프로그램 간 재사용 가능하며, 더 복잡한 작업에 적합.
  • BAPI: 외부 애플리케이션과의 통합 및 비즈니스 객체의 데이터 처리에 사용.
profile
안녕하세요!

0개의 댓글