본문 바로가기

ABAP 프로그래밍 개념/Modulazation Technique

1. Modularization Techniques

Modularization(이하 모듈화)는 프로그램을 하나의 분할할 수 없는 단위로 처리하는 것이 아니라 프로그램의 코드를 모듈적인 구조로 분해 및 구성하는 것입니다. 모듈화에는 다양한 장점이 있는데, 코드의 중복을 줄이는 데 도움이 될 코드의 가독성과 ABAP 프로그램 유지보수에 도움이 될 프로그램 코드의 조직화에 장점이 있습니다.

이번 카테고리를 통해서, 이벤트(Event)와 프로시져(Procedure)를 통한 ABAP 프로그램 흐름과 런타인 환경 제어 프로그램에 대해 알아볼 것입니다. 더불어서, Processing Block의 개념과 그것의 특징, 정의 방법. 호출 방법, Processing Block이 로컬 데이터를유지할 수 있는지와 Processing Block이 정의될 수 있는 ABAP 프로그램에 대해 알아보겠습니다.


Modularization Overview(모듈화 개요)


ABAP 프로그램은 그 자체로 모듈화되어 있지만, 개발자가 기능을 더 작은 단위의 모듈로 나눌수 있습니다. 이러한 모듈은 Processing Block이라고 불리웁니다. Processing Block은 프로그램의 전체적인 기능을 얻기 위해 함께 넣을 수 있습니다.

자세히 설명하기 위하여 예시를 들어보겠습니다.

HR 부터를 위한 어플리케이션을 개발한다고 하였을 때, 어플리케이션의 요구사항 중 하나는 조직 구성원이 조직에 입사한 날짜를 찾는 것이라고 해봅시다. 이것은 어플리케이션이 제공하는 전체 기능 중 하나이지만, HR  기능 중 많은 어플리케이션에서 요구하는 특징입니다.

주어진 날짜의 요일을 찾으려면 수십 줄의 코드를 작성해야 할 수 있습니다. 새로운 개발자라면, 몇시간이나 몇일을 맞는 로직을 만들기 위해 소비해야 할 수 있습니다. 또한 해당 코드를, 메인 프로그램에 구성했다면, 개발자는 해당 코드를 반복해서 비슷한 기능을 요구하는 다른 어플리케이션들에도 적용해야합니다.

가장 안좋은 경우는, 같은 조직 혹은 프로젝트의 다른 개발자들 중 아무도 내가 이미 요구사항에 맞는 코드를 수 시간에 걸쳐 개발했음에도 불구하고, 기존에 개발된 대상을 알지 못하여 다시 개발을 진행하는 것입니다. 이것은 같은 업무에 대해서 많은 사람들이 불필요한 많은 시간을 소비하는 것입니다.

이러한 기능은 Function Module로 기능 구성하여 어떠한 프로그램에서 호출될 수 있게 함으로서, 개발자들간에 코드 중복과 시간 소비를 줄일 수 있습니다.

ABAP 프로그램의 모듈화(Modularizing)는 아래와 같은 많은 이점을 가지고 옵니다.

1) 코드 가독성 증가(Improves code readability)
2) 쉬운 유지보수 (Eases maintenance)
3) 재사용가능한 소프트웨어 블록 개발 지원 (Helps develop reusable software blocks)
4) 향후 개선할 수 있는 애플리케이션 설계 허용(Allows the design of applications with scope for future enhancements)
5) 개발 공수 절약(Saves development effort)
6) 크고, 복잡한 요구사항들의 요구사항에 결합될 수 있는 작고 유지보수가 쉬운 모듈로 구성(Helps break down big, complex requirements into smaller, easy-to-maintain modules that can be combined to meet your requirements)
7) Splits development across team members without locking the code ( 코드 잠금 없이 팀원들과 분할 개발)

ABAP 프로그램을 개발하는데 더 많은 시간을 소비할수록, 큰 어플리케이션의 개발과 수정을 간략화할 수 있기 때문에,  모듈화의 장점에 대해 깨닫게 될 것입니다.

ABAP에서, 우리는 다양한 종류의 Processing Block을 사용할 수 있습니다. 몇몇의 Processing Block은 프로그램 외부에서 ABAP 런타임 환경에 의해 호출될 수 있고, 몇몇은 프로그램 내부에서 ABAP 구문에 의해 호출될 수 있는데, 이렇게 내부에서 호출되는 Processing Block은 Procedure라고 불리웁니다.

Called by the ABAP Runtime Environment
Processing Block Feature
Event Block 프로그램이 실행될 때, 사전 정의된 이벤트가 트리거된다면 ABAP 런타임 환경에 의해 호출됨. 이 Processing Block은 특정 Event 키워드를 사용하여 프로그램 내부에서 유지보수됩니다.
Dialog Block 일반적인 Screen이 처리되는 동안, Screen Flow Logic으로부터 ABAP 런타임 환경에 의해 호출됩니다. 이 Processing Block은 MODULE~ENDMODULE 사이의 스크린의 메인 로직에 의해 유지보수되고, Screen Flow Logic에서 MODULE 구문을 사용하여 호출됩니다.
Called by the ABAP Statement
Processing Block Feature
Subroutines 프로그램 내부에서 모듈화에 유용한 Processing Block. Subroutine은 프로그램 내부에서 내적으로 혹은 다른 프로그램에서 외부적으로 둘 다 호출될 수 있음에도 불구하고, 주로 한 프로그램 내부에서 재사용성을 위해 사용됩니다. 외부에서 Subroutine을 호출하는 것은 추천하지 않고 피하는 것이 좋습니다.

Subroutine은 FORM~ENDFORM 사이에서 유지보수되고 PERFORM 구문을 통해 호출됩니다.
Function Modules 이 Procedure는 시스템 전역에서 유지보수되고 어떠한 다른 프로그램을 통해 호출이 가능합니다. SE37(Function Builder)을 사용해서 유지보수되고, 해당 T-CODE를 통해 함수를 시스템 중앙에서 관리할 수 있습니다.

Funciton Module은 function pool 유형의 프로그램에서 FUNCTION~ENDFUNCTION 구문 사이에서 유지보수되고, CALL FUNCTION 구문을 통해 호출됩니다.

Function Module은 Subroutine과 유사하게 작동되지만, Function Module은 시스템 전역에서 정의되고 더 찾기 쉽습니다.
Methods ABAP Object안에 클래스의 기능을 포함합니다. Methods들은 클래스에서 정의도고, OOP(object-oriented programming)을 지원합니다.

Methods는 METHOD~ENDMETHOD 구문 사이에서 유지보수되며, CALL METHOD 구문을 통해 호출됩니다.

클래스는 ABAP 프로그램 안에서 로컬적으로 정의될 수 있고 SE24(Class Builder)을 통해  시스템 전역적으로 정의할 수 있습니다.

일반적으로, 프로그램 내에서 재사용성을 위해 Subroutine을 사용하고, 시스템 안에서 다수의 프로그램에서의 재사용성을 의하여 Function Builder을 사용하고 OOP 컨셉 실행을 위해 Method를 사용합니다.

Modularization(모듈화)는 Processing Block에 제한되지 않고, 개발자는 ABAP 소스 코드를 Include program과 Macros를 사용하여 모듈화할 수 있습니다.

1) Include Program
Include Program은 Repository Object로서, 소스코드를 모듈화한다는 하나의 목적을 가지고 이습니다. Include Program은 타 프로그램 안에서 Built in(장착)되며, 개별적으로 실행시킬 수 없습니다.

2) Macros
Macro는 코드 모듈화의 다른 방법이지만, Macro는 구식 기술로 간주되며 점차 사용되지 않습니다. Macro는 디버그하기 어렵지만 코드에서 구문을 두 번 이상 실행하는 데 사용할 수 있습니다.

여러 프로그램에서 유사하게 데이터 선언 집합을 사용하는 경우, 모든 ABAP 프로그램에 포함될 수 있는 Include Program에 해당 선언을 선언 &사용 할 수 있습니다. 이렇게 한다면, 데이터 선언 대부분이 하나의 Include Program을 사용하기 때문에, 다양한 프로그램에서 같은 데이터 선언을 사용함으로서 코드의 재사용이 가능합니다.

ABAP Object에서, Include Program은 클래스를 Visibility Parts, Declaration, Methods 등으로 분리하여 볼 수 있게하는데 유용합니다. Include Program의 하나의 목적은 소스코드를 모듈화 하는 것 입니다. ABAP 런타임 환경은 Include Program을 독립된 메인 프로그램으로 인식하지 않고 Include Program은 절대 직접 실행되지 않고 타 메인 프로그램에 포함되어서 사용됩니다.

Event Block과 Dialog Module에서의 모듈화는 ABAP 프로그램의 일반적인 실행에 도움을 주고, Procedure과 Include Program을 통한 모듈화는 소스 중복과 재사용, 데이터 캡슐화를 통해 ABAP 프로그램의 재사용성과 유지에 도움을 줍니다.

반응형