Function Module 만들기

SAP ABAP 2008. 12. 30. 00:53


1. se37로 가서 Goto - Function Groups - Create group 선택.


2. 그룹명과 숏텍스트를 알맞게 써주고.. se80으로 이동. 펑션그룹이 생성된 것을 볼 수 있다.
이제 그룹에서 모듈을 추가하자.

3. 모듈을 추가하는 것은 어렵지않다..단, 펑션그룹을 생성했을때나 모듈을 생성했을때나 즉시 Active해주는 것을 잊지 말아야 한다.

4. Import부분은 사용자로부터 입력받은 데이터를 저장하는 변수를 정하는 곳이다.
8자리 생년월일을 입력받을 거니깐 타입은 그냥 TYPE으로 참조유형으로 DATS(문자로 저장되는 날짜유형의 8자리 필드)


5. Export부분은 처리된 프로그램의 리턴값을 의미한다고 보면 된다. 유의할 것은 역시 참조유형으로 프리미티브(Primitive)타입을 넣어도 되고 글로벌타입 아밥딕셔너리 내에 정의된 Data Element를 써도 되는데 후자를 선택할 경우 반드시 정의된 것이어야 한다. 


6. 예외처리부분이다. 예외발생시 단문엥 정의된 에러메시지를 보여준다.


7. 코딩은 import와 export에 정의한 변수대로 잘 매핑을 시켜야 한다.



이제 적용시켜보자..

코딩창에서 Pattern을 누르면 Call Function을 입력하는 부분이 나온다. 모듈명을 입력하고 확인을 누르자..
콜펑션에 대한 기본적인 세팅이 된다.
Exporting은 위의 모듈에서 정의했던 import부분 변수를 매핑하고..
Importing은 Export부분에서 정의한 변수를 알맞게 매핑하면 된다.

프로그램측면에서 보면 파라미터 birth 가 보내는 변수이니까 익스포팅,
로직을 타고 리턴값을 받은 E_SEASON 등을 받아야 하니까 임포팅이 되는 것이다.


헌데, 자바나 기타 언어를 다루어 보았다면 유의할 점이 변수의 대입부분이다.
E_SEASON = p_season 은 우측값을 좌측에 넣겠다는 것이 아니라 좌측값을 우측에 넣겠다는 의미다. 유의하자.


  REPORT  ZDH_TEST_06 .

DATA : p_age type ZEDU11_AGE, "데이타타입 사용에 유의한다. c타입으로 하면 에러발생..
            p_season(4type c.
PARAMETERS : birth type d.

CALL FUNCTION 'ZDH_AGE_AND_GETSEASON2'
  EXPORTING
    i_birthday       = birth
 IMPORTING
   E_SEASON  = p_season "자바의 변수와 다르다. 임포팅에서 좌측의 데이터가 우측으로 복사
   E_AGE         = p_age
 EXCEPTIONS
   NOT_VAILD        = 1
   OTHERS           = 2.
          .
IF sy-subrc <> 0.
  MESSAGE s398(00with '에러났어'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

write :/ p_season, p_age.

AND