ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Modularization] Function
    SAP/Abap 2022. 1. 18. 17:03

    [Function: Overview]

    Subroutine과 유사하게 기능별 모듈화, 재사용을 위해 구성된 구문이다.
    Subroutine은 local modularization, Function은 global modularization이라고 할 수 있다.
    • Function과 Subroutine의 차이점
      • Function은 function group이라고 하는 일종의 pool에 포함되어야 한다.
      • Function은 예외처리 기능을 제공하여, 에러 발생시 해당 에러를 호출한 프로그램에 전달할 수 있다.
      • Function은 호출 프로그램에 상관없이 stand-alone 테스트가 가능하다.
    • Function은 호출시 parameter를 input으로 제공하고, 수행 결과를 output parameter로 반환한다.
    • Function group: 유사한 기능의 function을 모아놓은 container.

     

    1) Function module.

    • R/3 repository(중앙 라이브러리)에 저장되는 global subroutine.  => Global Modulatization
    • 구성요소
      • Import parameters: Function module에 전달되는 값
      • Export parameters: Function module에서 반환되는 값
      • Changing parameters: Function module에 전달되어 value가 바뀔수 있는 값.
      • Tables: Function module에 전달되고 반환되는 인터널 테이블
      • Exceptions: 에러에 대한 정보

     

    2) Function group

    Function group 내의 특정 function이 호출되면 호출한 프로그램의 internal session에 호출된 function이 포함된 function group내의 모든 function들이 load된다.
    • 다수의 function module이 저장된 container.
    • 특정 function 호출 시 해당 function group내의 모든 function이 load되므로 해당 function group내의 모든 function들은 데이터와 프로세스를 공유한다.
      • 따라서 이러한 특징은 하나의 function에 의해 다른 function들이 영향을 받을 수 있음을 의미한다.
    • Function group이 생성되면 시스템은 자동으로 main program과 include program을 생성한다.
      • Main program의 이름: SAPL<fgrp>   =>   SAPL + function group의 이름
      • Main program이 포함하는 include program
        • L<fgrp>TOP: function pool구문을 포함하고, function group에서 사용가능한 global(전역)변수가 선언된다..
        • L<fgrp>UXX: 실제 function module을 포함하는 프로그램으로 XX는 01, 02 등 숫자로 기술된다.

     

     

    [Function group 생성]

    1. [T-code: SE37]

    2. Function group 이름 지정

    • Z + 모듈명 + 순번

    3. Package 지정

    4. 생성된 function group

    • LZFGT01TOP: ZFGT01 group내의 모든 전역변수가 선언됨
    • LZFGT01UXX: ZFGT01 group내 function module 생성시 스크립트가 자동 추가됨

     

     

     

    [Function module]

    1) Function module 리스트 검색

    • Information system이용: 빈칸상태에서 [F4] 입력

     

    • 검색어(STRING_SP)로 시작하는 funciton module 검색: 'STRING_SP*'입력 후 [F4]키 입력
      • 검색에 쓰이는 와일드카드(Wild card)
        * 임의의 문자열(길이제한 X)
        + 임의의 문자(길이1) 
      • STRING_SPLIT: 폐기된 함수(Obsolete)임을 의미

     

    2) Function module의 세부내용 확인

    • STRING_SPLIT_AT_POSITION 클릭 후 [display] 버튼 클릭

    • Attributes 탭
      • 해당 function module이 소속된 group, 작성자, 생성일, 패키지 등의 일반 관리정보 조회
      • Processing type
        • Regular Function Module 일반적으로 사용되는 module
          Remote-Enabled Module 동일 시스템 내 비동기 호출(병렬처리), RFC(Remote Function Call)를 위한 module
          Update Module Database update를 위해 추가 function을 포함하는 module.   => SAP Bundling
      • General data
        • Edit Lock 해당 module을 작성한 개발자 외에 변경을 금지하는 옵션
          Global 옵션 선택시 해당 module내의 변수를 function group의 global data로 선언
    • 그 외 탭
      • Import parameter: Function module을 호출한 프로그램에서 전달받는 값
      • Export parameter: Function module을 호출한 프로그램으로 전달할 값
      • Changing parameter: Function module과 해당 module을 호출한 프로그램 사이 동시에 주고받는 값
      • Tables parameter: Function module과 해당 module을 호출한 프로그램 사이 동시에 주고받는 다수의 값(인터널 테이블)
      • Type parameter의 type 지정 키워드 [TYPE | LIKE | TYPE REF TO]
        Associated Type data type 또는 참조할 특정 필드
        Default Value parameter의 초기값
        Optional parameter를 선택사항으로 설정
        Passing Value parameter 전달 시 메모리를 신규할당한 후 값 복사
      • Exceptions: Function module이 실행되는 동안 발생하는 예외

     

     

    3) Function module 생성

    • [T-code: SE37]

    import / export parameter, exception 정의

    • 생성된 스크립트

    • 스크립트 작성 및 활성화([F3])

     

     

    4) Function module 테스트

    • Function module 실행([F8]) 후 import parameter 입력

    • Function module 테스트(실행)

     

     

     

    5) Function module 호출

    • 프로그램 생성 및 Tool bar의 Pattern 클릭, 호출할 함수명 입력

    • 입력된 함수의 스크립트가 자동으로 생성된다.
      • 해당 함수의 import param은 프로그램에서 exporting에 위치하고, export param은 importing에 위치한다.

    • 작성된 스크립트
      • IF sy-subrc = 1.  => fuction 호출시 i_num2값이 0으로 전달되면 예외처리가 되어 sy-subrc 시스템 변수에 1이 전달된다.
    REPORT ZA04_18.
    
    DATA gv_result TYPE i.
    
    CALL FUNCTION 'ZFM_01'
      EXPORTING
        i_num1         = 10
        i_num2         = 2
      IMPORTING
        E_RESULT       = gv_result
      EXCEPTIONS
        DIV_ZERO       = 1
        OTHERS         = 2
              .
    IF sy-subrc = 1.
    * Implement suitable error handling here
      WRITE :/ 'You cannot divide by 0'.
      EXIT.
    ENDIF.
    
    WRITE :/ 'Result: ', gv_result.

     

     

     

    [RFC: Remote Function Cal]

    Legacy(레거시) 시스템과 SAP R/3 시스템 간의 interfacing(인터페이싱)을 위해서는 R/3 시스템의 function은 RFC여야 한다.
    • Legacy의 데이터를 SAP에 전달하거나, SAP의 데이터를 Legacy에 전달하기 위해서는 RFC를 사용한다.
      • RFC만으로는 문제해결이 어렵기에 WEBMETHODS를 구현하여 같이 사용한다.
      • WEBMETHODS: Legacy와 SAP시스템 간의 인터페이스 역할을 하는 프로그램
    • Function의 정의된 Attributes중 processing type 속성값을 Remote-enabled module로 선택하면 해당 function을 RFC로 정의할 수 있다.
      • 이후 CALL FUNCTION구문에 DESTINATION을 추가해 연결할 서버를 지정해야한다.

    'SAP > Abap' 카테고리의 다른 글

    [Internal Table] Internal table  (0) 2022.01.19
    [Internal Table] Internal table 개념  (0) 2022.01.19
    [Modularization] Subroutine  (0) 2022.01.17
    [Open SQL & Native SQL] Native SQL  (0) 2022.01.14
    [Open SQL & Native SQL] SQL else  (0) 2022.01.14
Designed by Tistory.