CONV란?

CONV 연산자는 데이터 타입을 변환하는데 사용된다.

한 타입의 변수를 다른 타입으로 변환할 수 있다.

 

CONV type( [let_exp] dobj )  형식으로 사용되며, 아래와 같이 사용할 수 있다.

 

CONV #(     

CONV I(       

 CONV STRING(

 

내가 느낀 것은 인라인 선언과 함께 사용할 때나, CLASS 나 FUNCTION의 파라미터를 입력할 때 편하다고 느꼈다.

 

예제를 통해서 하나씩 봐보자.

1. TYPE 변환

 

두 가지 타입이 다른 경우가 있다.

LV_VALUE는 TYPE C 이고 LV_INT는 TYPE I 이다.

 

CONV 연산자는 데이터의 TYPE을 변환해준다. 

해당 코드는 LV_VALUE의 값을  TYPE 'I' 로 변환해 LV_INT에 할당하라는 코드이다. 

 

실제 프로그램에서는 CHAR 와 INT 타입은 SAP 스탠다드 설정으로 자동 변환되어 CONV를 사용하지 않아도 정상적으로 실행된다. 

 

저렇게 사용한다는 것만 참고하자.

 

2. FUNCTION 에서 사용

- CONV는 TYPE 변환 연산자라고 했다. 우리가 TYPE 변환을 많이 사용하는 FUNCTION MODULE에서의 사용법이다.

 

해당 FUNCTION은 DAY_IN이라는 파라미터가 날짜타입이다. 우리는 여기에 문자형을 넣을거다.

그러면 당연히 파라미터와 TYPE이 맞지 않아 덤프가 뜰거다.

 

위의 코드는 TYPE 불일치로 덤프가 나오는 코드이다. 

나는 과거에 교육 과정 프로젝트에서 TYPE 생각을 안하다가 덤프를 마주한적이 간혹 있었다.

 

 

Function Module의 파라미터와 변수가 TYPE이 맞지 않아 덤프가 뜬다. 

 

이럴 때마다 나는 해당 TYPE에 맞는 변수를 새로 생성해주고 TYPE을 변환시켰었다. (근데 이게 은근 귀찮다....)

하지만 이제는! CONV를 써서 간편하게 TYPE을 변환할 수 있다. 

 

CONV 연산자를 사용해 LV_VALUE를 TYPE D로 변환하는 코드이다. 

 

근데 여기서도 한가지 의문이 생겼다. 

대부분 CONV 연산자에 예시로 TYPE I, TYPE STRING 등만 있어서

CONV SFLIFHT-FLDATE (LV_VALUE) 처럼 TABLE의 필드도 사용되는지 궁금했다.

 

 

정상적으로 프로그램이 실행되고 LV_VALUE가 BKPF 테이블의 BLDAT TYPE으로 변환된다. 

 

3. CLASS

만약에 아래와 같은 클래스가 있다고 치자.

 

I_INT1과 I_INT2는 I 타입이다.

 

만약 LV_F가 F 타입이기 때문에 CONV 없이 그냥 들어간다면 FUNCTION 때 처럼 덤프가 발생할 거다.

하지만 CONV # 을 사용하면은 CLASS의 파라미터 타입으로 변환되어 덤프가 뜨지 않는다.

 

그러면 여기서 CLASS의 CONV # 과 FUNCTION의 CONV랑 차이가 궁금할거다.

 

CONV #

  • CLASS에서만 사용 가능
  • 자동적으로 파라미터의 TYPE을 받아준다 ( VALUE # 과 동일 )

CONV TYPE

  • Function 에서 사용 시, CONV 뒤에 타입을 꼭 지정해줘야 한다. (CONV # 불가능 )
  • TABLE의 Field로도 TYPE을 받을 수 있다. 

 

만약에 왜 CLASS에서는 #이되고, Function에서는 #이 안되는 지 궁금하다면, 

내가 이전의 데이터 인라인 선언 게시글에 정리하였으니, 그거를 참고하면 된다!

 

# 데이터 인라신 선언 포스팅 참고! 

2025.03.05 - [SAP/NEW SYNTAX] - [SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

 

[SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

SAP의 ERP 시스템은 방대한 데이터를 효율적으로 관리하는 것이 핵심이다. 기존 ABAP Old SYNTAX는 오랫동안 사용되어 왔지만, 대량의 데이터를 처리할 때 성능 문제와 제한 사항이 존재했었다. 그러

roblige.tistory.com

 

4. 응용 방법

1)  TABLE의 라인 수를 이용하여, 메세지 출력 또는 TITLE 에 사용

 

2) CLASS에서 사용 

 

해당 응용 방법 말고도 많은 방법이 존재하니, 잘 활용하기를 바란다.

 

오늘도 파이팅 입니다. :)

 

오늘은 NEW SYNTAX의 2번째 Table Expressions, 테이블 표현식이다! 

READ TABLE을 대체할 수 있는 신 문법으로, 내부 테이블이나 표준 테이블의 특정 행에 직접 접근할 수 있다.

기존에 없었던 새로운 접근 방식으로, 개발자가 코드를 더 간결하고 읽기 쉽게 만들 수 있도록 돕는다.


지난 포스팅에서 정리한 데이터 인라인 선언 방식을 적용하여, 함께 사용한다면 코드가 더 간결해 질 수 있다.

 

# 데이터 인라신 선언은 이전 포스팅 참고! 

2025.03.05 - [SAP/NEW SYNTAX] - [SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

 

[SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

SAP의 ERP 시스템은 방대한 데이터를 효율적으로 관리하는 것이 핵심이다. 기존 ABAP Old SYNTAX는 오랫동안 사용되어 왔지만, 대량의 데이터를 처리할 때 성능 문제와 제한 사항이 존재했었다. 그러

roblige.tistory.com

 

일단은 늘 하던대로, 얼마나 간결해지는 지 예시부터 보자. 

 

 

 

READ TABLE은 SAP 개발을 하면서 많이 쓰는 구문 중의 하나이다. 우리가 자주 쓰는 구문이 사진의 NEW SYNTAX처럼 사용을 할 수 있다. 기존의 4줄의 코드는 데이터 인라인 선언과 테이블 표현식을 사용하여 1줄이 되었다. 

 

테이블 표현식의 코드를 해석하면 LV_CARRID2를 만들고, GT_DATA 테이블의 1번 INDEX(첫줄)를 찾고 1번 INDEX의 CARRID 값을 넣어라! 가 된다. 이런식으로 간결하게 표현할 수 있는게 큰 장점이다.

 

해당 예시는 여러가지 경우에서 변수에 값을 넣는 부분이지만 내가 공부하면서 느낀 거는 다양한 코드들을 정말 간결하게 표현할 수 있는 것 같다. 

 

 

하지만,

이 테이블 표현식을 사용하려면 우리는 아래의 2가지 사항을 정확하게 숙지해야 한다. 

  1. 값을 할당할 때, 테이블에 데이터가 존재하지 않으면 ITAB_LINE_NOT_FOUND 이라는 Runtime Errors(덤프)가 발생한다.
  2. SY-SUBRC 는 존재하지 않는다. 데이터가 들어가도 SY-SUBRC 는 4 값을 가진다.

자세한 내용은 아래에서 예시와 함께 보자.

 

1. READ TABLE INDEX

 

처음 예시랑 똑같은 내용이다.

테이블에 데이터를 스트럭쳐로 옮기는 경우 해당 코드를 작성할 수 있다.

 

하지만!! 가장 중요한 사항은 해당 INDEX에 대한 데이터가 존재하지 않으면 ITAB_LINE_NOT_FOUND 이라는 Runtime Errors(덤프)가 생긴다.

 

테이블 표현식은 데이터가 존재하지 않는다면 무조건 덤프를 낸다. 

 

"근데 우리가 개발하다 보면은 TABLE에 데이터가 존재할 수도 있고, 없을 수도 있는데 그런 상황에서는 쓰지 못할까? "

그래서 열심히 구글링과 SAP docu을 찾아봤다. 

 

역시 해결 방법이 존재했었다. 

1) TRY-CATCH를 이용하여 해결하기.


해당 코드는 TRY-CATCH를 이용해 데이터가 없을 경우, CATCH 로 빠지게 했다. 

프로그램을 실행시키면

실행 결과

덤프가 나지 않고 CATCH로 빠지게 된다. 

TRY-CATCH를 이용해 데이터가 없는 경우에 대한 로직을 작성하여 이 부분을 해결 할 수 있었다. 

 

그러나 만약 반복되는 코드일 경우 TRY-CATCH로 인해 가독성이 더 안좋질 수도 있다. 

그래서 두번째 방법이 존재하더라... 


2) VALUE와 OPTIONAL 이용하여 해결하기.

VALUE 구문은 NEW SYNTAX에서 핵심 중에 핵심이다. 제일 많이 본 것 같다. 

스트럭쳐와 변수에 데이터를 집어넣는 과정이다. 

OPTIONAL의 역할은 테이블에 원하는 데이터가 없을 때, CX_SY_ITAB_LINE_NOT_FOUND 예외가 발생하지 않도록 막아준다. 이녀석의 정확한 역할은 값이 있으면 넣고 없으면 패스~ 느낌인거 같다. 

 

그렇기 때문에 데이터가 없을 가능성이 있다면 잊지말고 항상 써줘야 한다. 

 


2. READ TABLE ~ WITH KEY.

WITH KEY 뒤 조건에 맞는 스트럭쳐를 테이블에서 가져오는 구문이다. 


WITH KEY를 입력하지 않고 대괄호([ ]) 사이에 해당 조건을 바로 나열해주면 된다. 

3. TRANSPORTING NO FIELDS.

우리는 원하는 조건의 데이터가 있는 지 확인하기 위해 TRANSPORTING NO FIELDS를 사용했다. 

그리고 IF SY-SUBRC를 이용해 데이터 존재 여부를 체크했었다. 

 

하지만 테이블 표현식을 사용할 때는 처음에 주의사항으로 이야기했던 

2. SY-SUBRC는 존재하지 않는다. 데이터가 들어가도 SY-SUBRC 는 4 값을 가진다 

이거를 기억해야 한다.

 

내가 직접 테스트 해본 결과, 데이터가 들어가도 이녀석들은 무조건 SY-SUBRC 4를 내뱉는다. 

그러면 같은 상황에서 데이터 핸들링을 하려면 어떻게 해야 할까? 

 

그래서 테이블 표현식에서는 두 가지 키워드가 존재한다.

# LINE_EXISTS와 LINE_INDEX.

1) LINE_EXISTS.

 

LINE_EXISTS는 조건에 맞는 테이블의 데이터 존재 여부를 확인해준다. 한마디로 ‘IF SUBRC = 0’ 이랑 같은 의미를 지낸다.

해당 조건에 DATA 여부를 확인하고, 존재하면 IF 문을 타게 된다.

 

2) LINE_INDEX.

LINE_INDEX는 해당 조건에 맞는 INDEX 값을 반환해준다.

인터널 테이블에 조건에 맞는 데이터가 몇번 INDEX에 있는 지 반환을 하게 된다.

 

기존에는 SY-TABIX로 인덱스 값을 확인했다면, 

테이블 표현식은 LINE_INDEX 키워드를 사용해서 조건에 맞는 데이터의 인덱스 값을 추출할 수 있다. 

 

실행 결과를 보면 CARRID가 FJ라는 데이터는 6번 INDEX에 존재하는 점을 알 수 있다. 

 

만약 데이터가 없는 경우는 0 값을 반환한다. 또한 INDEX가 존재할 수 없는 Hashed Table이나 Hashed Secondary Key를 사용한 경우에는 -1을 반환한다.

 

4. FIELD-SYMBOL ASSIGN.

필드심볼에 할당에 대한 테이블 표현식이다.

 

OLD 버전에서 IF조건문이 없고 데이터가 존재하지 않아도 덤프가 나지않는다. 

하지만 테이블 표현식은 데이터 없으면 가차없이! 덤프나기 때문에 무조건 IF 조건문으로 감싸줘야한다.

이렇게 반겨준다. 

 

25번에 데이터가 존재하지 않는 경우, 두 경우에 덤프 에러가 뜨지 않는다 .

 

근데 여기서 중요한 점은

SAP에서 해당 테이블 표현식을 쓸 때, IS ASSGIN 말고 SY-SUBRC를 사용하라고 권장을 한다. (SY-SUBRC 사용 못한다고 할때는 언제고…?)

 

이 경우에는 놀랍게도 기존에 4값만 들어오던 SY-SUBRC가 0값이 들어오게 된다........ 

이 부분에 대해서 찾아봤는데 필드 심볼의 할당은 ASSIGN을 사용하는 방법이 올바르지만, 여러 개발자의 유지보수 등을 고려하여 SY-SUBRC를 권장하는 거라고 한다. ( 어떤 개발자든 직관적으로 성공! 실패! 를 구분할 수 있다나 머라나.... ) 

 

# 응용

4-1. TABLE에서 데이터 변경

 

MODIFY로 인터널 테이블에서 값을 수정하는 과정을 간단하게 바꿀 수 있다.

NEW SYNTAX를 해석해보면 GT_SCARR테이블의 CARRID가 ‘AA’인 ROW의 CARRNAME을 ‘비행기’로 변경해라 가 될 수 있다.


다만 여기서도 해당 조건의 데이터가 없다면, ITAB_LINE_NOT_FOUND 가 반긴다는 것...

 

그렇기 때문에 나는 위 사진처럼 LINE_EXISTS를 사용하여 덤프를 방지 시킨다.

 

물론 TRY CATCH도 가능하다.

 

4-2. 2개의 테이블 데이터 핸들링.

GT_SCARR 의 특정 데이터의 값을 LT_DATA에 APPPEND 하는 상황이라고 가정.

 

 

둘 다 동일한 값을 가진다

 

4-3. F4 서치헬프 함수로 띄우는 과정에서 적용하기

실제 내가 적용했던 방법이다.

서치헬프에서 클릭한 값을 받아서 CALL FUNCTION 'DYNP_VALUES_UPDATE’에 사용하는 상황이다.

 

잘 참고하면 좋겠고 도움이 되었으면 좋겠다! 

올바르고 정답이 있는 코드는 없다고 생각한다. 

 

잘못된 코드는 있지만 올바른 코드는 없다! 각자 상황에 맞게 잘 활용하기를 바란다! 

 
SAP의 ERP 시스템은 방대한 데이터를 효율적으로 관리하는 것이 핵심이다. 기존 ABAP Old SYNTAX는 오랫동안 사용되어 왔지만, 대량의 데이터를 처리할 때 성능 문제와 제한 사항이 존재했었다. 그러한 이유로 비효율적인 구문을 ABAP개발자들 사이에서 공유하고 암묵적으로 사용하지 않았었다. SAP는 이러한 한계를 극복하고 최신 데이터베이스 기술을 반영하기 위해 ABAP New SYNTAX 를 도입하였다.
 
또한, SAP HANA DB로 전환되면서 데이터 연산을 데이터베이스 레벨에서 실행하는 'Push Down' 개념이 중요해졌다. 이를 통해 어플리케이션 서버의 부담을 줄이고 성능을 극대화할 수 있다.
 
하지만,
이 글의 목적은 무조건 'NEW SYNTAX가 최고야! ' 가 아니다. NEW SYNTAX에서도 단점이라고 하기에는 애매하지만 문제점(?)이 존재할 수 있다. 내가 신입으로 입사하고 NEW SYNTAX 공부를 하면서 느낀 장점과 문제점을 공유해보겠다. 
 

 내가 생각하는 New Syntax의 장점 

1. 코드 간결화 

- 데이터 인라인 선언 등으로 인해 코드가 많이 간소화되고 기존의 여러줄을 써야 하는 코드들을 한 줄로 해결할 수 있는 문법들이 많다. 
 
잠깐 아래 예시를 봐보면 코드 간결화가 이해될거다. 
해당 코드는 ALV의 FCAT에 값을 넣는 상황이다. 

OLD SYNTAX에서 GT_FCAT 테이블에 값을 넣는 코드 길이는 30줄이다. 

NEW SYNTAX는 단 5줄로 끝난다. 저기서 사용한 VALUE 구문이 NEW SYNTAX 에서 가장 많이 사용되는 구문 같다

결과는 동일하다. 

두 과정의 GT_FCAT 결과화면

2.  개발자의 편의성 

- SAP가 ABAP 개발자의 편의성을 얼마나 중요시 생각했는지 알게 된다. 기존에 타입을 맞춰서 데이터 핸들링 등을 하는 번거로움 없이 인라인 선언으로  해당 타입을 자동적으로 읽어 알맞게 생성해준다.
 

3.  직관성  

- New Syntax 구문을 알고 있는 사람이 해당 코드를 보면은 정말 직관적으로 볼 수 있다. 위의 예시만 봐도 VALUE 구문을 이용해서 한눈에 알아볼 수 있게 코드가 짜여져있다. 
 

 내가 생각하는 New Syntax의 단점 

1.  코드의 복잡성  

- 장점에서는 직관적이고 간결하다고 했는데 갑자기 복잡성?! 이럴 수 있다. 이거는 내가 느낀 주관적인 사항이니 참고만 하면 좋을 것 같다. New Syntax 구문에 대한 지식이 없으면 더 복잡하게 느껴진다.
 
예제1) 
너무나 당연한 이야기지만 내가 처음 NEW SYNTAX은 VALUE 였고 구문에 대한 이해가 없으니 더 어렵게 느껴졌다. 

'DYNP_VALUES_UPDATE' FUNCTION을 이용해 F4 서치헬프의 값을 사용하는 과정

 
지금은 VALUE 구문을 알기에 어렵게 느껴지지 않지만 처음에는 큰 괴리감이 느껴졌다. 
한줄씩 뜯어서 해석하는데 오래 걸리기도 했다. 
 
그렇기 때문에 오히려 신문법을 배운 세대와 그렇지 않은 세대들이 거리감을 느낄 것 같다는 생각이 들었다.  
 

 내가 내린 결론 : Old Syntax와 New Syntax의 선택 


나는 한 가지 궁금증이 있었다.

'New Syntax가 SAP에서 성능을 위해서 개발한 신문법인데 모두 이거를 사용해야 하는거 아냐?' 라는 생각을 가지고 이곳 저곳을 찾아본 결과 답은 상황 BY 상황, 회사 BY 회사 였다. 최종적으로 내용을 정리해보면서 아래와 같은 결론이 나왔다. 

  1. 개발자가 개발하기는 정말 편해진 것 맞다. 
  2. 하지만 NEW SYNTAX 잘못 사용할 경우 코드가 더 복잡해질 수 있다.  
  3. 신입 개발자(신문법 시대) 와 시니어 개발자(구문법 시대) 사이의 괴리감이 존재할 수 밖에 없다. 
  4. 정답은 없다. ABAP 7.0 이전일 경우는 Old Syntax를 사용해야만 HANA일때는 NEW 선택해도 된다.
  5. 본인이 특히 운영업무라면, 두 가지 방법 다 알 고 있는 것이 도움이 된다. 


결국은 본인이 성장하면서 직접 깨닫고 본인만의 개발 방법을 찾아야 하는 것 같다.! 무엇보다 많이 알고 있어서 손해볼 거는 없는 것 같다. 
 
 New Syntax의 첫 포스팅이기에 서론이 정말 길었지만.....
이제 이번 주제였던 데이터 인라인 선언에 대해 간략하게 정리해보겠다. 
 

 데이터 인라인 선언 

1.  변수 선언

- 기존에는 데이터 선언과 값을 할당하는 로직으로 2줄 이상의 코드가 필요했지만, 인라인 선언이 가능해지면서
  선언부에 대한 불필요한 로직을 줄이고, 선언과 값 할당을 동시에 할 수 있다.

변수 선언


2-1.  LOOP문에서 DATA 선언

- 개발을 하다보면은 LOOP를 돌려야 하는 순간을 많다. 여러 테이블을 LOOP 해야 한다면 DATA 선언부에 스트럭쳐를 모두 생성해야 했지만 이제는 ‘DATA(스트럭쳐명)’ 으로 선언이 가능하다.

초기 테이블 데이터


위와 같은 데이터가 있는 상태에서 아래와 같은 방법으로 선언이 가능하다. 


2-2.  LOOP문에서 FIELD-SYMBOL 선언

- 필드심볼도 인라인 선언이 가능하다. 
 

 
필드심볼을 따로 선언하지 않고 바로 할당 가능하다. 
타입은 자동적으로 GT_ITAB에 맞춰진다. 
 

3.  SELECT문에서 DATA 선언

- 단, SELECT 문에서 인라인 선언시에는 New SQL 방식으로 입력해줘야한다. 
- 변수에는 @ 기호를 추가해야 되고, 필드명은 컴마(,)로 구분해줘야 한다. 

SELECT문
SELECT SINGLE

 

4.-1   READ TABLE에서 DATA 선언

DATA 선언


4-2.  READ TABLE에서 FIELD-SYMBOL 선언

 

5.   METHOD에서 DATA 선언

- 메서드를 호출할 때, 실제 매개변수(Actual Parameter)는 형식 매개변수(Formal Parameter)와 타입이 일치해야 한다. 하지만 메서드의 형식 매개변수가 변경될 경우, 기존 방식에서는 관련된 모든 변수 선언을 수정해야 하는 번거로움이 있었다. 인라인 선언을 하면은 쉽게 해결 가능하다. 


이렇게 인라인 선언을 정리해보았다. 참고해서 사용하면 좋을 것 같다. 물론 내가 보려고 정리했다~ 나처럼 필요한 사람이 있을 수 있으니까~
 
마지막으로 인라인 선언을 찾아보면서 METHOD에서 인라인 선언 방식이 굉장히 편해보였다. 그래서 Function Module에서는 불가능한가? 라는 호기심에 찾아봤다. 
 

# Function Module은 인라인 선언이 안될까? 

결론부터 말하면, 불가능하다. 

나는 비전공자이다보니, 처음에는 왜 안되는 지 이해할 수 없었다. 하지만 Function Module과 Method의 개념과 차이를 알고나니 쉽게 이해되었다. ( 전공자들은 부럽다... )  
 

1) 함수 모듈과 Method의 차이

ㅁ Method 호출 구조

메서드는 클래스(Class) 내부에 정의되며, 객체 지향 프로그래밍(OOP) 방식으로 동작된다.

  • 컴파일러가 메서드 시그니처(Method Signature, 즉 매개변수 타입 정보)를 정확히 알고 있음
  • 메서드 호출 시점에 인라인 선언된 변수의 타입을 자동 유추 가능
  • 이 때문에 CALL METHOD 구문에서는 DATA(...) 인라인 선언이 가능

 
메서드는 클래스 내부에서 정의되기 때문에, 컴파일러는 클래스를 직접 참조해서 메서드의 매개변수 타입을 확인할 수 있다. 그래서 P1의 타입을 보고, lv_p1의 타입을 자동으로 설정할 수 있다. 
 

ㅁ 함수 모듈(Function Module) 호출 구조

함수 모듈(CALL FUNCTION)은 컴파일 타임(코드 작성 시점)이 아니라 런타임(실행 시점)에 호출된다.

즉, 컴파일러가 함수 모듈 내부에서 P1이 어떤 타입인지 미리 알 수 없기 때문에, DATA(...)를 사용할 수 없는 거다.

해당 코드는 다음과 같은 에러 메세지가 뜬다. 

함수 모듈은 실행되기 전까지 ev_result의 타입이 무엇인지 확실하지 않으므로 인라인 선언이 불가능하다.
 

2) 함수 모듈의 실행 방식

함수 모듈은 "디스크에서 로드 → 실행 → 언로드" 과정이 필요하며, 이는 메서드와 다른 점이다. 차이는 다음과 같다. 
ㅁ 메서드(Method) 호출:

  • 이미 메모리에 로드된 클래스의 일부
  • 호출 즉시 시그니처를 참조하여 타입을 결정할 수 있음

ㅁ 함수 모듈(Function Module) 호출:

  • 독립적인 실행 환경을 가짐
  • 호출될 때 완전히 별개의 프로그램처럼 실행
  • 함수 모듈 내부에서 정의된 IMPORTING/EXPORTING 매개변수의 타입 정보를 호출부에서 즉시 활용할 수 없음


이런 구조적 차이로 인해, 함수 모듈에서는 CALL FUNCTION 구문 안에서 새로운 변수를 인라인으로 선언할 수 없는 것이다.
 

3) SAP의 기술적 방향성과 함수 모듈의 역할

SAP은 ABAP OO(Object-Oriented ABAP)를 적극적으로 지원하며, 새로운 기능(인라인 선언, 테이블 표현식 등)은 클래스 및 메서드 중심의 구조에 맞춰 발전되고 있다고 한다.( 그렇대요.. )

  • 함수 모듈은 RFC(Remote Function Call), BAPI 등에서 여전히 중요한 역할을 하지만, 새로운 기능과의 호환성이 제한적
  • SAP도 클래스 기반 개발을 권장하고 있으며, 함수 모듈보다 클래스를 활용하는 것이 유지보수성 측면에서 유리


다음과 같은 이유로 Function Module에서는 인라인 선언이 불가능하다고 한다. 
혹시나 나와 같은 비전공자로서 궁금증이 있는 사람은 도움 되기를 바란다!! 
 
 

+ Recent posts