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

 
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에서는 인라인 선언이 불가능하다고 한다. 
혹시나 나와 같은 비전공자로서 궁금증이 있는 사람은 도움 되기를 바란다!! 
 
 

[SAP ABAP] ABAP 루프문(Loops) - DO, DO n TIMES, WHILE, SELECT..ENDSELECT, LOOP AT..ENDLOOP

1. DO 루프

애는 계속 무한반복을 하게 된다. 그래서 IF 문을 사용해서 EXIT를 사용해 빠져나올 수 있게 해줘야 한다. 특정 조건에 만족하면 해당 루프를 빠져 나오게끔 처리해줘야한다.

대부분 그거를 IF로 조건이 맞으면 빠져나와 라는 구문을 써준다.

abap코드 복사
DO.
  Statements
  IF <abort_condition>. 
  EXIT. 
  ENDIF.
ENDDO.

  • 설명: DO ... ENDDO 구조는 무한 루프입니다. EXIT 문을 사용하여 특정 조건(<abort_condition>)이 만족되면 루프를 빠져나갑니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

2. DO n TIMES 루프

n 자리에 반복하고자 하는 숫자 또는 변수를 입력한다. 그러면 n번만큼 반복하게 된다.

abap코드 복사
DO n TIMES.
  Statements
ENDDO.

  • 설명: 루프를 n번 반복합니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

3. WHILE 루프

while - endwhile

조건이 참이면 반복을 하고 거짓이면 반복 중단을 한다.

abap코드 복사
WHILE <condition>.
  Statements
ENDWHILE.

  • 설명: 주어진 조건이 참(true)인 동안 루프를 반복합니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

4. SELECT ... ENDSELECT 루프

abap코드 복사
SELECT ... FROM <dbtab> ...
  Statements
ENDSELECT.

  • 설명: 데이터베이스 테이블에서 데이터를 선택하여 각 행에 대해 루프를 실행합니다.
  • Database Table Rows: sy-dbcnt 시스템 변수가 선택된 행(row)의 수를 카운트합니다.

 

5. LOOP AT <internal table> ... ENDLOOP

abap코드 복사
LOOP AT <internal table> ...
  Statements
ENDLOOP.

  • 설명: 내부 테이블의 각 행에 대해 루프를 실행합니다.
  • Row Index for Internal Table: sy-tabix 시스템 변수가 내부 테이블에서 현재 행(row)의 인덱스를 나타냅니다.

 

정리 

  • DO 루프: 무한 루프. EXIT를 사용해 조건을 만족할 때 빠져나옵니다. 루프 횟수는 sy-index로 카운트.
  • DO n TIMES 루프: n번 반복하는 루프. 루프 횟수는 sy-index로 카운트.
  • WHILE 루프: 조건이 참인 동안 반복하는 루프. 루프 횟수는 sy-index로 카운트.
  • SELECT ... ENDSELECT 루프: 데이터베이스 테이블의 각 행에 대해 반복. 선택된 행의 수는 sy-dbcnt로 카운트.
  • LOOP AT <internal table> ... ENDLOOP: 내부 테이블의 각 행에 대해 반복. 현재 행의 인덱스는 sy-tabix로 나타냅니다.

[SAP ABAP] ABAP 주요 T-CODE(티코드) 정리

SAP ABAP 트랜잭션 코드 표

구분트랜잭션 코드설명

SAP ABAP T-CODE
조회관련 SE80 오브젝트 네비게이터 (Object Navigator)
SE16 데이터 브라우저 (Data Browser)
SE16N 일반 테이블 조회 (General Table Display)
SE09 전송 조직자 (Transport Organizer)
개발 관련 BAPI BAPI 탐색기 (BAPI Explorer)
SE11 ABAP 딕셔너리 (ABAP Dictionary)
SE38 ABAP 편집기 (ABAP Editor)
SE37 기능 작성기 (Function Builder)
SE24 클래스 작성기 (Class Builder)
SE91 메시지 (Message Maintenance)
SE93 트랜잭션 (Maintain Transaction)
TEST SM21 시스템로그 (System Log)
ST05 Performance Trace
ST22 덤프 분석 (ABAP Runtime Error)
기능 ABAPHELP 키워드 문서 (ABAP Key Word Documentation)
ABAPDOCU 데모 (ABAP Documentation and Examples)
SQVI 퀵 뷰어 (Quick Viewer)
SQ01, SQ02, SQ03 SAP Query

각 트랜잭션 코드 설명

  1. SE80 - 오브젝트 네비게이터 (Object Navigator)
    • SE80은 ABAP 개발 환경에서 객체를 관리하고 탐색하는 주요 도구입니다. 이 트랜잭션을 통해 프로그램, 함수 그룹, 클래스, 패키지 등 다양한 객체를 생성, 수정, 삭제할 수 있습니다.
  2. SE16 - 데이터 브라우저 (Data Browser)
    • SE16은 데이터베이스 테이블의 내용을 조회할 수 있는 트랜잭션 코드입니다. 특정 조건에 맞는 데이터를 검색하거나 테이블의 전체 내용을 확인할 수 있습니다.
  3. SE16N - 일반 테이블 조회 (General Table Display)
    • SE16N은 SE16의 향상된 버전으로, 더 직관적인 인터페이스와 추가 기능을 제공합니다. 데이터를 조회하고 편집할 수 있으며, 빠른 데이터 검색을 지원합니다.
  4. SE09 - 전송 조직자 (Transport Organizer)
    • SE09는 전송 요청(Transport Request)을 관리하는 트랜잭션 코드입니다. 개발 변경 사항을 다른 시스템으로 이동할 때 사용하는 전송 요청을 생성하고 추적할 수 있습니다.
  5. BAPI - BAPI 탐색기 (BAPI Explorer)
    • BAPI(Business Application Programming Interface)는 비즈니스 객체를 SAP 시스템에서 호출할 수 있는 인터페이스입니다. BAPI 탐색기를 통해 다양한 BAPI를 검색하고 테스트할 수 있습니다.
  6. SE11 - ABAP 딕셔너리 (ABAP Dictionary)
    • SE11은 데이터 사전을 관리하는 트랜잭션 코드입니다. 여기서 테이블, 뷰, 데이터 요소, 도메인 등 데이터베이스 객체를 생성하고 수정할 수 있습니다.
  7. SE38 - ABAP 편집기 (ABAP Editor)
    • SE38은 ABAP 프로그램을 작성하고 수정할 수 있는 트랜잭션 코드입니다. 프로그램 소스 코드를 편집하고 디버깅할 수 있습니다.
  8. SE37 - 기능 작성기 (Function Builder)
    • SE37은 함수 모듈을 관리하는 트랜잭션 코드입니다. 새로운 함수 모듈을 생성하고, 기존 함수 모듈을 수정 및 테스트할 수 있습니다.
  9. SE24 - 클래스 작성기 (Class Builder)
    • SE24는 ABAP 클래스와 인터페이스를 관리하는 트랜잭션 코드입니다. 객체 지향 프로그래밍을 지원하며, 클래스와 메서드를 생성하고 수정할 수 있습니다.
  10. SE91 - 메시지 (Message Maintenance)
    • SE91은 메시지 클래스를 관리하는 트랜잭션 코드입니다. 메시지 클래스를 생성하고 메시지 텍스트를 정의할 수 있습니다. 이 메시지들은 프로그램에서 오류 또는 정보 메시지로 사용됩니다.
  11. SE93 - 트랜잭션 (Maintain Transaction)
    • SE93은 트랜잭션 코드를 생성하고 유지보수하는 트랜잭션 코드입니다. 사용자 정의 트랜잭션 코드를 생성하여 특정 프로그램이나 기능에 접근할 수 있습니다.
  12. SM21 - 시스템로그 (System Log)
    • SM21은 시스템 로그를 확인하고 분석하는 트랜잭션 코드입니다. 시스템 오류, 경고, 정보 메시지 등을 추적할 수 있습니다.
  13. ST05 - Performance Trace
    • ST05는 데이터베이스 성능을 분석하기 위한 트랜잭션 코드입니다. SQL 문, 락, 버퍼 등을 추적하여 성능 문제를 진단할 수 있습니다.
  14. ST22 - 덤프 분석 (ABAP Runtime Error)
    • ST22는 ABAP 프로그램 실행 중 발생한 런타임 오류(Dump)를 분석하는 트랜잭션 코드입니다. 오류 원인을 파악하고 해결책을 찾을 수 있습니다.
  15. ABAPHELP - 키워드 문서 (ABAP Key Word Documentation)
    • ABAPHELP는 ABAP 언어의 키워드에 대한 문서를 제공하는 트랜잭션 코드입니다. ABAP 키워드, 문법, 사용 예제 등을 확인할 수 있습니다.
  16. ABAPDOCU - 데모 (ABAP Documentation and Examples)
    • ABAPDOCU는 ABAP 프로그램의 예제와 문서를 제공하는 트랜잭션 코드입니다. 다양한 예제 프로그램을 통해 ABAP 기술을 학습할 수 있습니다.
  17. SQVI - 퀵 뷰어 (Quick Viewer)
    • SQVI는 간단한 조회 보고서를 생성할 수 있는 트랜잭션 코드입니다. 사용자가 테이블과 필드를 선택하여 빠르게 데이터를 조회하고 보고서를 만들 수 있습니다.
  18. SQ01, SQ02, SQ03 - SAP Query
    • SQ01, SQ02, SQ03 트랜잭션 코드는 SAP Query를 생성하고 관리하는 데 사용됩니다. SQ01은 쿼리 디자인, SQ02는 정보 세트 유지보수, SQ03은 사용자 그룹 관리를 담당합니다.

[SAP ABAP] SAP GUI ABAP Workbench Tools(아밥 워크벤치 주요 도구)

ABAP Workbench 도구

그림 설명:

이 이미지는 SAP 시스템에서 ABAP 워크벤치(ABAP Workbench) 도구들을 보여줍니다. ABAP 워크벤치는 SAP 개발자들이 다양한 개발 작업을 수행할 수 있도록 도와주는 도구 모음입니다. 각각의 도구는 특정한 기능을 가지고 있으며, 효율적인 개발 환경을 제공합니다.

주요 도구:

  1. Object Navigator (객체 탐색기): SE80
    • 개발자들이 프로젝트의 모든 객체를 관리하고 탐색할 수 있는 중심 도구입니다.
    • 프로그램, 함수 모듈, 클래스 등 다양한 객체를 쉽게 찾고 열 수 있습니다.
  2. ABAP Editor (ABAP 편집기): SE38
    • ABAP 코드를 작성하고 수정할 수 있는 텍스트 편집기입니다.
    • 문법 강조, 코드 포매팅, 자동 완성 기능을 제공합니다.
  3. Screen Painter (스크린 페인터): SE51
    • 사용자 인터페이스를 디자인하는 도구입니다.
    • 화면 레이아웃을 설계하고, 입력 필드, 버튼 등을 배치할 수 있습니다.
  4. Menu Painter (메뉴 페인터): SE41
    • 애플리케이션의 메뉴 구조를 디자인하는 도구입니다.
    • 메뉴 항목과 서브 메뉴를 생성하고 구성할 수 있습니다.
  5. Function Builder (함수 빌더): SE37
    • 함수 모듈을 생성하고 관리하는 도구입니다.
    • 재사용 가능한 함수 모듈을 작성하고, 다른 프로그램에서 호출할 수 있습니다.
  6. Class Builder (클래스 빌더): SE24
    • 객체 지향 프로그래밍을 위한 클래스와 인터페이스를 생성하고 관리하는 도구입니다.
    • 클래스 정의, 메서드 구현, 상속 등을 지원합니다.
  7. ABAP Dictionary (ABAP 딕셔너리): SE11
    • 데이터베이스 테이블, 뷰, 데이터 요소 등을 정의하고 관리하는 도구입니다.
    • 데이터 모델링과 데이터베이스 구조를 설계할 수 있습니다.
  8. Debugger (디버거):
    • 프로그램을 실행하면서 코드를 단계별로 검토하고 오류를 찾을 수 있는 도구입니다.
    • 중단점 설정, 변수 값 확인, 실행 흐름 제어 등을 지원합니다.

[SAP ABAP] CTS(Chang Request) 생성 및 패키지 생성

Chang Request란? 

 

출처 : SAP BC400

 

 

Change Request란? 

SAP에서 모든 오브젝트는 패키지에  의해 관리가 된다. 이 패키지들이 Application Compornent에 의해 관리가 된다. 

쉽게 이해하기 위해서는 Application Compornent를 우리가 아는 모듈이라고 생각하면 편하다. 


예를 들어 FI 모듈 > FI 관련 패키지 > FI 관련 Object 이렇게 생각하면 편할 듯 하다. 

 

보통 우리가 개발을 하고 나면은 운영 시스템에 이관을 해줘야 하는데 이거를 Change Request Number를 통해서 전달한다. Change Request 라는 박스 안에 개발된 내용들을 모두 담고 번호를 통해서 넘기는 거다. 

 

 

Change Request를 만들기 위해서는

T-CODE: SE09

티코드에 접속해서 왼쪽 상단의 하얀색 종이 클릭

 

Crate Requst에서 2번째 Workbench를 클릭한다. 

 

빨간색 박스 Request는 자동으로 할당되기 때문에 건들이지 않는다. 

파란색 박스는 Short description 같은 것으로 무조건 입력해야 하는 필드이고, 내가 입력하고 싶은 이름을 입력하면 된다. 

 

빨간색이 Request Number 

파란색은 Task Number이다. 

 

* Task Number란? 

위에서 Request를 이용해서 박스에 담아 넘긴다고 했었다. 

일반적으로 프로젝트를 시작하면 프로젝트 리더와 일원이 있다. 일반적으로 Change Request는 프로젝트 리더가 만든다고 한다. 그리고 그 아래 Task Number의 일원들을 등록을 해주는 것이고 여러개의 Number가 올 수 있다.

그 이후 각자 맡은 모듈을 개발한 후 합친다. 

 

이제 패키지를 생성하자. 

 

똑같이 Shot Description 입력 

Own Requests 를 눌러서 Requests를 등록해준다. 

클릭하기 

 

그러면 정상적으로 패키지 생성 완료. 

[SAP ABAP] SAP GUI의 화면 요소

SAP GUI의 화면 요소


SAP GUI (Graphical User Interface)에서 사용자 프로필을 유지 관리하는 화면의 요소입니다. 각 요소는 사용자가 SAP 시스템을 보다 효율적으로 사용할 수 있도록 도와줍니다. 주요 화면 요소는 다음과 같습니다:

  1. Menu Bar (메뉴 바):
    • 화면 상단에 위치하며, 파일, 편집, 보기 등의 메뉴를 제공합니다.
    • 사용자는 메뉴 바를 통해 다양한 기능에 접근할 수 있습니다.
  2. System Toolbar (시스템 도구 모음):
    • 메뉴 바로 아래에 위치합니다.
    • 일반적인 시스템 기능, 예를 들어 저장, 열기, 인쇄 등의 아이콘을 포함합니다.
  3. Title Bar (제목 표시줄):
    • 현재 화면의 제목이 표시됩니다.
    • 사용자가 현재 작업 중인 화면이 무엇인지 쉽게 알 수 있습니다.
  4. Application Toolbar (애플리케이션 도구 모음):
    • 화면 중앙 상단에 위치하며, 현재 화면에서 사용할 수 있는 기능을 아이콘 형태로 제공합니다.
    • 특정 화면에서 자주 사용하는 기능에 빠르게 접근할 수 있습니다.
  5. Command Field (명령 필드):
    • 사용자가 명령어를 직접 입력하여 특정 화면이나 기능으로 빠르게 이동할 수 있습니다.
    • 예를 들어, 트랜잭션 코드를 입력하여 특정 화면으로 이동할 수 있습니다.
  6. Tab Pages (탭 페이지):
    • 여러 관련된 정보나 옵션을 탭으로 구분하여 제공합니다.
    • 사용자는 각 탭을 클릭하여 해당 페이지의 내용을 볼 수 있습니다.
  7. Input Field (입력 필드):
    • 사용자가 정보를 입력할 수 있는 공간입니다.
    • 예를 들어, 이름, 전화번호 등의 정보를 입력할 수 있습니다.
  8. Status Bar (상태 표시줄):
    • 화면 하단에 위치하며, 현재 시스템 상태나 작업 진행 상황을 표시합니다.
    • 에러 메시지나 확인 메시지 등 중요한 정보를 보여줍니다.

[SAP ABAP] WRITE 문의 출력 형태

SAP ABAP WRITE 문의 출력 형태

WRITE 문은 SAP ABAP에서 데이터를 다양한 형식으로 출력하는 데 사용됩니다. 출력 형식을 변경하거나 특수한 스타일을 적용하는 방법에 대해 알아보겠습니다.

FORMAT

특정한 형태(색깔, 강조체 등)를 출력 변수값에 적용합니다.

AS CHECKBOX (체크박스 형태 출력)

  • 변수 값을 체크박스 형태로 출력합니다. ('X'일 경우 체크된 값으로 출력됨)
  • 사용자는 출력된 리스트에서 값을 변경할 수 있습니다.
  • 값을 변경하지 않으려면 INPUT OFF를 정의해야 합니다.

예제:

WRITE field_1 AS CHECKBOX INPUT OFF.

 

AS SYMBOL (심볼 형태 출력)

  • 이 형식을 사용하려면 이전에 다음의 문장을 기술해야 합니다:
INCLUDE <SYMBOL>.

AS ICON (아이콘 형태 출력)

  • 이 형식을 사용하려면 이전에 다음의 문장을 기술해야 합니다:
INCLUDE <ICON>.

  • 이 옵션을 사용하면 SAP R/3에 정의된 아이콘을 출력할 수 있습니다.

AS LINE (선 형태 출력)

  • 이 형식을 사용하려면 이전에 다음의 문장을 기술해야 합니다:
INCLUDE <LINE>.

  • 이 옵션을 사용하면 SAP R/3에 정의된 선을 출력할 수 있습니다.

QUICKINFO g (빠른 정보 출력)

  • 이 옵션은 흔히 말하는 툴팁(부풀림 도움말)을 제공합니다.
  • 어떤 아이콘이나 위치에 마우스를 올려놓으면 g(도움말)가 나타나는 형태를 제공합니다.
  • 최대 40자까지 지원하며, g는 비숫자형 변수여야 합니다.

WRITE f TO g[+off][(len)]

  • f의 값을 g 변수에 이동합니다.

WRITE f TO itab[+off][(len)] INDEX idx

  • 내부 테이블의 idx 번째 데이터를 대상으로 값을 이동합니다.

예제 코드

다음은 다양한 WRITE 문의 사용 예제입니다:

REPORT Z00TEST_04 NO STANDARD PAGE HEADING.

INCLUDE <LINE>.
INCLUDE <ICON>.

DATA : L_COLOR TYPE CHAR25 VALUE '색깔 테스트'.

FORMAT COLOR COL_HEADING ON.
WRITE : / L_COLOR.
FORMAT COLOR OFF.

FORMAT INVERSE ON.
WRITE : / L_COLOR.
FORMAT COLOR OFF.

FORMAT COLOR 7.
WRITE : / L_COLOR.

ULINE /1(50).
WRITE: / SY-VLINE NO-GAP, LINE_TOP_LEFT_CORNER AS LINE.
ULINE 3(48).
WRITE: / SY-VLINE NO-GAP, SY-VLINE NO-GAP.

DATA: INFO(20) VALUE 'Information'.
WRITE: / SY-UNAME QUICKINFO 'User name'.
WRITE: / ICON_INFORMATION AS ICON QUICKINFO info
HOTSPOT COLOR COL_POSITIVE.

ULINE.

DATA SALES TYPE P VALUE 146260.
WRITE SALES CURRENCY 'USD' ROUND 3 DECIMALS 1.
WRITE SALES CURRENCY 'KRW' ROUND 3 DECIMALS 1.
WRITE SALES CURRENCY 'USD' ROUND 2 DECIMALS 2.
WRITE SALES CURRENCY 'KRW' ROUND 2 DECIMALS 2.

 

출력 결과

[SAP UI5/Fiori] - SAPUI5 라이브러리와 UI 컨트롤

SAPUI5 라이브러리와 UI 컨트롤 가이드

SAPUI5는 다양한 기기에서 반응형 웹 애플리케이션을 개발하기 위한 강력한 프레임워크입니다. SAPUI5는 다양한 용도로 모듈화된 UI 컨트롤 세트를 제공하는 라이브러리 개념을 가지고 있습니다.

SAPUI5의 주요 라이브러리와 포함된 UI 컨트롤에 대해 자세히 알아보겠습니다.

UI 컨트롤이란 무엇인가?

UI 컨트롤은 버튼, 콤보박스, 텍스트 필드, 입력 및 출력 필드, 테이블 등과 같이 사용자 인터페이스를 구성하는 기본 요소입니다. 이러한 UI 컨트롤은 SAPUI5 라이브러리에 포함되어 있으며, 다양한 애플리케이션 개발에 사용됩니다.

주요 SAPUI5 라이브러리

1. sap.m

  • 설명: SAPUI5의 주요 컨트롤 라이브러리로, 반응형 컨트롤을 포함하고 있어 터치 장치 및 데스크톱 브라우저에서 모두 사용할 수 있습니다.
  • 주요 특징: 가장 많이 사용되는 라이브러리로, 다양한 기기에서 일관된 사용자 경험을 제공합니다.

2. sap.ui.comp

  • 설명: 스마트 컨트롤을 포함한 SAPUI5 라이브러리입니다.
  • 주요 특징: 사용자가 쉽게 상호작용할 수 있는 지능형 UI 요소를 제공합니다.

3. sap.ui.table

  • 설명: 주로 데스크탑 시나리오에 사용되는 테이블 형태의 컨트롤을 제공합니다.
  • 주요 특징: 데스크탑에 최적화되어 있지만, 모바일 및 태블릿에서도 작동합니다. 단, 모바일이나 태블릿에서 작성된 테이블은 PC에서 작게 표시되는 문제가 있어 데스크탑 사용에 더 적합합니다.

4. sap.ui.layout

  • 설명: 화면을 보기 좋게 구성하는 레이아웃 컨트롤을 포함한 라이브러리입니다.
  • 주요 특징: UI 요소를 정렬하고 배치하는 데 사용됩니다.

5. sap.ui.core

  • 설명: SAPUI5 Core 런타임을 포함하며, 모든 구성 요소와 기본 클래스를 포함합니다.
  • 주요 특징: jQuery와 기본적으로 사용되는 UI 컨트롤을 포함하고 있으며, 가장 핵심적인 기능들이 포함되어 있습니다.

SAPUI5를 사용한 개발의 이점

반응형 디자인

SAPUI5 라이브러리는 모든 디바이스에서 일관된 사용자 경험을 제공하기 위해 반응형 디자인을 지원합니다. 이를 통해 개발자는 별도의 모바일 및 데스크탑 버전을 만들 필요 없이, 하나의 코드베이스로 다양한 기기에서 최적화된 애플리케이션을 개발할 수 있습니다.

확장성

SAPUI5는 모듈화된 구조를 가지고 있어 필요에 따라 다양한 컨트롤을 쉽게 추가하거나 제거할 수 있습니다. 이는 애플리케이션의 확장성을 높이고 유지보수를 용이하게 합니다.

강력한 데이터 바인딩

SAPUI5는 강력한 데이터 바인딩 기능을 제공하여 UI와 데이터 모델 간의 동기화를 쉽게 할 수 있습니다. 이를 통해 데이터 변경 사항이 실시간으로 UI에 반영되며, 사용자 상호작용이 원활하게 이루어집니다.

다양한 테마와 커스터마이징

SAPUI5는 다양한 테마를 제공하여 애플리케이션의 외관을 쉽게 맞춤화할 수 있습니다. UI Theme Designer를 사용하면 기업의 브랜딩 가이드라인에 맞춰 애플리케이션의 디자인을 쉽게 변경할 수 있습니다.

결론

SAPUI5는 반응형 웹 애플리케이션을 개발하기 위한 강력하고 유연한 프레임워크입니다. 다양한 UI 컨트롤과 라이브러리를 통해 개발자는 효율적이고 확장 가능한 애플리케이션을 만들 수 있습니다. SAPUI5를 활용하여 사용자 경험을 극대화하고, 다양한 비즈니스 요구를 충족시키는 애플리케이션을 개발해 보세요.

[SAP UI5/Fiori] - SAP Fiori란? 5가지의 주요 템플릿(Overview Page, List Report, Object Page, Analytical List Page, Worklist)

SAP Fiori의 주요 템플릿 가이드

SAP Fiori는 기업 애플리케이션의 사용자 경험을 혁신하기 위해 설계된 디자인 언어입니다. Fiori는 화면 구성을 위한 디자인 가이드라인을 제공하며, 이를 통해 만들어진 웹 및 애플리케이션 전체를 Fiori라고 부릅니다. 

Fiori의 5가지 주요 템플릿과 그 특징을 자세히 살펴보겠습니다.

Fiori란 무엇인가?

Fiori는 사용자 인터페이스 디자인을 단순화하고 표준화하여 일관된 사용자 경험을 제공하는 것을 목표로 합니다. Fiori의 디자인 가이드라인에 따라 개발된 애플리케이션은 직관적이고 반응형이며, 모든 기기에서 원활하게 작동합니다. 이러한 Fiori 애플리케이션은 비즈니스 작업을 보다 효율적으로 수행할 수 있도록 도와줍니다.

Fiori의 5가지 주요 템플릿

1. Overview Page

  • 설명: 회사의 모든 비즈니스를 한눈에 볼 수 있는 페이지입니다.
  • 구성 요소: 각 사각형 박스를 '카드'라고 부르며, 카드에는 중요한 비즈니스 데이터를 요약하여 표시합니다.
  • 연결성: 각 카드는 List Report, Object Page 등 다른 페이지로 넘어갈 수 있는 링크를 제공합니다.
  • 사용 예: 경영진이 회사의 주요 성과 지표(KPI)를 빠르게 확인할 수 있도록 도와줍니다.

2. List Report

  • 설명: 검색 조건에 해당하는 데이터 리스트를 표시하는 페이지입니다.
  • 기능: 사용자는 데이터를 필터링하고 검색하여 원하는 정보를 쉽게 찾을 수 있습니다.
  • 연결성: 리스트 항목을 클릭하면 해당 항목의 상세 정보를 확인할 수 있는 Object Page로 이동할 수 있습니다.
  • 사용 예: 판매 관리자들이 특정 기간 동안의 판매 기록을 조회하고 세부 정보를 확인할 때 유용합니다.

3. Object Page

  • 설명: 비즈니스 오브젝트의 상세 정보를 제공하고 관리할 수 있는 페이지입니다.
  • 기능: 사용자는 비즈니스 오브젝트의 모든 속성 및 관련 데이터를 확인하고 편집할 수 있습니다.
  • 사용 예: 제품 관리자들이 특정 제품의 상세 정보를 조회하고 수정할 때 사용됩니다.

4. Analytical List Page

  • 설명: 데이터를 분석하여 차트로 표현하는 페이지입니다.
  • 기능: 사용자에게 데이터의 시각적 분석 결과를 제공하여 인사이트를 도출할 수 있도록 합니다.
  • 사용 예: 데이터 분석가들이 판매 데이터를 분석하고 시각화하여 트렌드를 파악할 때 유용합니다.

5. Worklist

  • 설명: 사용자에게 할당된 작업 목록을 표시하는 페이지입니다.
  • 기능: 각 로그인한 유저가 해야 할 일들을 표시하여 작업의 우선순위를 관리할 수 있도록 도와줍니다.
  • 사용 예: 부사장이 결제 내역을 확인하거나, 직원이 휴가 신청서를 관리할 때 사용됩니다.

결론

SAP Fiori는 사용자가 직관적으로 비즈니스 작업을 수행할 수 있도록 돕는 강력한 디자인 언어입니다. Fiori의 5가지 주요 템플릿인 Overview Page, List Report, Object Page, Analytical List Page, 그리고 Worklist는 각각의 특성과 기능을 통해 다양한 비즈니스 요구를 충족시킵니다. 이러한 템플릿을 활용하여 사용자는 효율적이고 일관된 사용자 경험을 누릴 수 있습니다.

[SAP UI5/Fiori] - SAP UI5란 무엇인가? (특징과 장점, 주요 UI기술)

SAP UI5란 무엇인가?

SAP UI5는 반응형 웹 애플리케이션을 구축하는 데 사용되는 JavaScript 프레임워크입니다. MVC(모델-뷰-컨트롤러) 아키텍처를 준수하여 애플리케이션 로직, 사용자 인터페이스, 데이터 처리를 분리합니다. 이러한 분리는 개발 과정을 더 관리 가능하고 확장 가능하게 만듭니다.

SAP UI5의 주요 특징

  1. 반응형 디자인: SAP UI5로 구축된 애플리케이션은 다양한 화면 크기와 장치에 적응하여 데스크톱, 태블릿, 스마트폰 등에서 일관된 사용자 경험을 제공합니다.
  2. 풍부한 컨트롤: 이 프레임워크는 복잡한 사용자 인터페이스를 쉽게 만들 수 있는 다양한 사전 제작 컨트롤(위젯)을 제공합니다.
  3. 데이터 바인딩: SAP UI5는 데이터 바인딩을 지원하여 개발자가 UI 요소를 데이터 모델에 쉽게 연결할 수 있습니다.
  4. 테마와 브랜딩: UI Theme Designer를 사용하여 기업의 브랜딩 가이드라인에 맞춰 애플리케이션의 외관을 맞춤화할 수 있습니다.

개발 과정

개발 환경 설정

SAP UI5 애플리케이션을 개발하려면 SAP Business Application Studio(BAS)에 접근해야 합니다. BAS는 SAP 애플리케이션 개발을 위해 클라우드 기반 통합 개발 환경(IDE)을 제공합니다.

애플리케이션 생성

  1. 프로젝트 생성: BAS에서 새로운 SAP UI5 프로젝트를 생성합니다.
  2. MVC 구조: MVC 아키텍처를 사용하여 애플리케이션을 개발합니다. 데이터 모델, 뷰(UI), 컨트롤러(애플리케이션 로직)를 정의합니다.
  3. OData 통합: SAP Gateway를 사용하여 백엔드 데이터 소스에 애플리케이션을 연결합니다. OData 프로토콜은 데이터의 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 용이하게 합니다.
  4. 테마 설정: UI Theme Designer를 사용하여 애플리케이션의 외관을 맞춤화합니다.

배포 및 실행

개발이 완료되면 애플리케이션을 SAP Fiori Launchpad에 배포합니다. Fiori Launchpad는 모든 SAP UI5 애플리케이션에 접근할 수 있는 중앙 허브 역할을 하여 통합되고 직관적인 사용자 인터페이스를 제공합니다.

SAP UI5의 장점

  • 사용자 경험: SAP UI5는 현대적이고 사용자 친화적인 인터페이스를 제공하여 전체적인 사용자 경험을 크게 향상시킵니다.
  • 유연성: 이 프레임워크의 유연성은 특정 비즈니스 요구에 맞춘 맞춤형 애플리케이션을 만드는 것을 가능하게 합니다.
  • 확장성: MVC 아키텍처와 강력한 데이터 바인딩 기능은 애플리케이션이 증가하는 비즈니스 요구에 맞게 확장될 수 있도록 보장합니다.
  • 통합: OData 프로토콜을 활용한 효율적인 데이터 통신으로 다양한 SAP 및 비SAP 시스템과 원활하게 통합됩니다.

 

주요 SAP UI 기술

SAP UI5는 기업용 웹 애플리케이션을 만들기 위해 설계된 다재다능하고 강력한 도구입니다. SAP의 사용자 경험을 현대화하기 위한 광범위한 전략의 일환으로, 개발자에게 풍부한 기능과 역량을 제공합니다. SAP UI5의 핵심 측면을 탐구하고 다른 SAP UI 기술과 비교하며, SAP의 다른 도구들과의 통합에 대해 자세히 알아보겠습니다

 

SAP는 SAP Fiori 사용자 경험을 제공하기 위해 다양한 도구와 기술을 제공합니다. 

1. Classical Screen

  • 개발 환경: SAP Logon이 필요하며 ABAP Workbench 시스템 내에서 개발됩니다.
  • 실행: ABAP 서버에서 직접 실행되며 웹 기반 실행을 지원하지 않습니다.
  • SAP Screen Personas: 일반적으로 많이 사용되지는 않지만, 클래식 스크린을 웹 실행용으로 변환할 수 있는 도구입니다. 주로 한국의 SK와 같은 일부 조직에서 사용됩니다.

2. Web Dynpro

  • 레이아웃 기반 개발: 레이아웃을 사용하여 웹 애플리케이션 화면을 만듭니다.
  • 실행: 프로그램을 웹 브라우저에서 실행할 수 있으며, URL을 통해 연결할 수 있습니다.
  • 통합: 회사 포탈 또는 SAP 엔터프라이즈 포탈에 통합되어 원활한 웹 환경을 제공합니다.

3. SAP UI5

  • 개발 환경: SAP 비즈니스 테크놀로지 플랫폼(BTP)의 일부인 SAP Business Application Studio(BAS)를 사용하여 개발됩니다.
  • 실행: Fiori Launchpad를 통해 배포되어 현대적이고 반응형인 사용자 인터페이스를 제공합니다.
  • 맞춤화: UI Theme Designer를 통해 다양한 테마를 제공합니다.
  • 데이터 통합: SQL을 사용하여 데이터 조작을 하는 ABAP와 달리, SAP UI5는 OData 프로토콜을 사용하여 SAP Gateway를 통해 데이터베이스에 연결합니다.

 

결론

SAP UI5는 SAP 생태계 내에서 현대적이고 반응형 웹 애플리케이션을 개발하기 위한 강력한 도구입니다. 풍부한 기능 세트와 원활한 통합 기능을 통해 조직이 사용자 경험을 향상시키는 데 탁월한 선택이 됩니다. 경험 많은 개발자이든 SAP 기술에 새로운 사람이든, SAP UI5는 강력하고 확장 가능한 애플리케이션을 구축하는 데 필요한 도구와 유연성을 제공합니다.

+ Recent posts