300x250

# APPEND의 New Syntax..?


# Value문은 ABAP 7.40 버전 이후부터 New Syntax으로 쓸 수 있는 방법이 나오게 되었다. 

 

# 여러 New Syntax가 나왔지만 여기서는 Append에 관련한 Value에 대해서 알아보자. 

 

# 여기서는 Workarea스트럭처로.. 참고..

# 그리고 항상 조심해야 하는 것은 New Syntax띄어쓰기가 가장 중요하다. 

 

# Append -> VALUE...


# 이거를 Append의 New Syntax라고 보기보다는 Append의 업그레이드 버전이라고 보면 될 것 같다. 

# 그 이유는 Append에 없는 기능을 사용하기도 하며, Append 가지고 있는 기능을 쓰기도 하기 때문이다. 

 

우선적으로 크게 봐야 할 기능들은  

 

- 스트럭처 넣기 

- 인터널 테이블 넣기 

- # 에 대해서

 

이다..! 

 

 

## 스트럭처에 값 넣기


# 01. 여기서는 Append 기능이 아닌 Value에 대한 기능이다. 

 

# Value 기능을 통해 스트럭처에 다음과 같이 을 넣을 수 있다. 

 

# 02. Value문을 쓰다가 이러한 상황이 올 수가 있다. 

# 현재 다음과 같이 스트럭처에 값이 있을 때? 변경된 값이 생겨서 변경해야 할 때.. 

# 그럴 때 위에서 썼던 것처럼 하면 기존에 있던 값들은 초기화되고 변경된 값만 들어가게 된다. 

 

정말 간단한 예시이니 참고 정도만 # 

 

# 02-1. [ LS_VALUE-CARRID = PA_ID ] 부분을 Value문으로 변경을 하게 된다면? 다음과 같이 설정을 해야한다. 

 

# BASE 옵션 #

# "기존에 있던 값들은 BASE 옵션을 통해서 값은 그대로(BASE)가고 나머지는 추가로 한다" 라고 생각하면 된다.

 

DATA:
  LS_VALUE TYPE SCARR.

LS_VALUE = VALUE #(
                    CARRID   = 'AA'
                    CARRNAME = '감자'
                    CURRCODE = 'KRW'
                    URL      = 'https://potato98.tistory.com/'
                  ).


PARAMETERS:
    PA_ID TYPE SCARR-CARRID.

LS_VALUE = VALUE #(
                        BASE LS_VALUE
                        CARRID   = PA_ID
                                    ).


WRITE:
 / ls_value-CARRID,
 / ls_value-CARRNAME,
 / ls_value-CURRCODE,
   ls_value-URL     .

 

 

## 인터널 테이블에 값 넣기


# 01. 여기서는 Append 기능을 사용하는  Value 기능이다. 

 

# 스트럭처에 넣는 거와 차이점" (   ) " 괄호개수이다. 

 

# 더 자세히 보면 빨간 상자하나의 스트럭처라고 보면 된다. 

 

# 만약 여러 개의 스트럭처를 가지고 있으면 다음과 같이 나오게 되는 것이다. 

 

# 02. 인터널 테이블 넣을 때 Value 또한 BASE 옵션을 통해서 기존에 있던 값배제하고 을 넣을 수 있다. 

 

DATA:
  LT_VALUE TYPE TABLE OF SCARR.

LT_VALUE = VALUE #(
                                    (
                                        CARRID   = 'AA'
                                        CARRNAME = '감자'
                                        CURRCODE = 'KRW'
                                        URL      = 'https://potato98.tistory.com/'
                                     )
                                    (
                                        CARRID   = 'GJ'
                                        CARRNAME = '여행'
                                        CURRCODE = 'KRW'
                                        URL      = 'https://GAMJA.com/'
                                     )
                                  ).

LT_VALUE = VALUE #( BASE LT_VALUE
                                    (
                                        CARRID   = 'VA'
                                        CARRNAME = '추가'
                                        CURRCODE = 'KRW'
                                        URL      = 'https://ADD.com/'
                                     )
                                 ).

 

# 03. Value문을 통해서 정말 다양하게 조작? 할 수 있다. 예를 들어 날짜를 이런 식으로 사용해서 Value문을 사용할 수 있다. 

 

 

# 넘어가기 전Header Line이 있는 인터널 테이블이면 꼭 " [  ] " 써줘야 에러가 발생 안 한다. 

 

 

## " # " 이란?


# 정말 간단하게 " 그림자 또는 따라간다 " 라고 생각하면 될 것 같다.

# 타입추론할 수 있는 경우? # 기호생략 가능하다. 

 

# 정식적인 명칭Easy ABAP 3.0을 보면 될 것이다. 

 

- 다음과 같이 " # "이 타입추론할 수 있는 경우에만 이런 식으로 사용할 수 있다. 

- " # " 항상 에 있는 변수( 스트럭처, 인터널 테이블) 타입 추론한다.

 

- 만약 다음과 같이 추론할 수 없는 경우에는 " # " 대신 타입을 지정해주면 된다.

 

- 중요한 것추론할 수 없는 인터널 테이블(?) " # " 대신 다음과 같이 타입 지정하려고 하면  

오류가 떨어지니 참고 바란다.

 

 

끝..!!!!

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90