ABAP 물타기/Smart Forms
Smart Forms : Basic (Hello Smart Forms!)
물타기
2010. 6. 15. 14:41
- Create Date : 2010-06-15
- Change Date : 2010-06-15
잡담 -ㅂ-;
TISTORY에서 처음 쓰는 posting이다~
나름 혼자 study하면서 작성하겠지만,
내글을 읽는 분이 있다면 조금이나마 도움이 됬으면 좋겠다.
Smart Forms는 생각보다 쉽지만,
항목이 많아지거나 미친(?) 고객사를 만나게되면 힘들게 느껴질 수도 있을것 같다.
그림이 복잡해져도 나중에 꽁수가 있으니, 넘 걱정은 말자~ 그건 나중에 posting 하기로 하고. (넘 기대는 말자 ㅋ)
TCODE
SMARTFORMS
Create
Form에 이름을 적고 Create 버튼을 눌러 생성한다.
생성이 되면 바로 저장한다.
Overview
Left : Navigation tree
Center : Maintenance screen (각 항목을 편집)
Right : Form painter (Window 개체의 위치 설정)
Navigation tree
Data, Page, Window, Template, Table, Text, Graphic, Flow logic 등을 생성한다.
생성방법은 해당 폴더에 마우스 커서를 놓고 오른쪽 마우스버튼을 클릭한 뒤 Context menu를 이용한다.
각 항목을 더블클릭하면 Maintenance screen에 편집할 수 있도록 Display 된다.
Hello Smart Forms!
출력할 Window 개체를 하나 생성한다.
'%PAGE1' 이라는 폴더가 기본적으로 생성되어져 있다.
마우스 오른쪽 버튼을 눌러 Create -> Window 를 차례로 클릭한다.
(모든 개체를 만들면 앞에 % 접두어가 붙는다 신경쓰지말고 원하는 이름으로 변경하면된다.)
아래 그림과 같이 좌측상단에 ' %W... ' 이름의 Window 창이 보인다.
마우스로 적절히 크기를 조절하자.
Window는 Text, Table 등의 개체를 담을 Container라고 생각하면 되겠다. (웹으로 치면 div 정도)
WINDOW 개체아래 TEXT 개체를 하나 생성한다. (마우스 오른쪽 클릭하면 다 있다)
아래그림과 같이 보인다면 반은 만들었다고 생각하면 된다.
나머지 반은 데이터를 가져와서 TEXT에 연결하고 실행하는 부분이 되겠다.
일단 간단히 실행 원리를 알기 위해 'Hello Smart Forms!' 라고 써보자.
이로써 기본적인 프로그램이 완성 됬다! (아래 Report에서 실행하는 것을 설명하겠다. 요게 더중요하니깐...)
Test
먼저 Active를 한다.
그리고 옆에 Test 버튼을 눌러 실행해보자.
아래와 같이 SE37로 이동하게되며, 자동으로 Function Module 이름이 생성되었다.
자동으로 생성해준다는걸 기억해 두자. Report에서 호출할때 사용된다.
Test는 Test일 뿐이다.
하지만 오류항목을 Display 해주므로, 나중에 개발하다가 오류가 발생하면 Test 로 실행해보도록 하자.
Excute 버튼을 누르면 일반 Function 실행과 같이 Display 된다.
parameter를 별도로 만들지 않았기 때문에 다시 excute 버튼을 눌러 실행해보자.
프린트 화면이 나오면 프린터를 지정한뒤 print preview 버튼을 눌러 미리보기를 하자 (완료)
Report에서 실행하기
Report에서 실행을 한다는 개념은, 자동으로 생성된 Function을 Report에서 호출한다는 것과 같다.
완전 쉽지 아니한가? -ㅂ-;;;
그전에 위와같이 잼없는 프로그램말구 parameter로 전달받는 데이터를 Display 하도록 수정해보자.
먼저 받아올 Function의 Import에 해당하는 변수를 하나 만들어보자.
뭐 Smart Forms가 Import 밖에 없겠지만...
MAIN_INFO 라는 C type 변수를 생성했다.
변수값은 Report에서 전달 받아 출력하게 된다.
Insert Field 버튼을 눌러 변수를 연결한다.
변수 앞뒤로 엠퍼센트(&)를 붙여야한다.
아래와 같이 등록이 된다.
앞뒤에 다른 문자를 함께 섞어 써도 된다.
이제 다시 active 를 하고 Report를 생성해 보도록 하자
일반 레포트를 하나 생성한 뒤 아래와 같이 코드를 작성하자.
구조를 먼저 설명하자면,
- 데이터 선언
- Smart Forms의 Function Module 이름을 가져옴
- Function Module 실행
소스는 아래와 같다. 실행시 Smart Forms이름에 위에 생성한 'ZSMARTFORMS01'을 넣고 실행하면된다.
결과는 최초 직접 Hello Smart Forms! 와 동일하게 출력된다.
REPORT ZSMARTFORMS01.
* Data
data : fm_name type rs38l_fnam, "function name
main_info(20) type c.
* Selection
parameters : p_form TYPE tdsfname default 'ZSMARTFORMS01'.
START-OF-SELECTION.
* text data
main_info = 'Hello Smart Forms!'.
* get function name
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = p_form
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
.
* excute smart forms
CALL FUNCTION fm_name
EXPORTING
main_info = main_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5
.
* Data
data : fm_name type rs38l_fnam, "function name
main_info(20) type c.
* Selection
parameters : p_form TYPE tdsfname default 'ZSMARTFORMS01'.
START-OF-SELECTION.
* text data
main_info = 'Hello Smart Forms!'.
* get function name
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = p_form
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
.
* excute smart forms
CALL FUNCTION fm_name
EXPORTING
main_info = main_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5
.
마무리
에고 여기까지 쓰는데 한시간 반정도 걸렸넹 ㅜ ㅜ
기본원리를 알았으니 앞으로는 간략히 적도록 하겠다.
본 샘플Report는 TEXT 개체만 사용했지만 Tamplate, Table 개체를 이용할 수 있다.
정리해보자면 다음과 같다.
- Smart Forms 생성
- Import parameter 및 디자인
- Report 생성
- Smart Forms의 Function Name을 가져옴
- Function Module 실행
다음에는 Taplate 사용에 대해 알아보도록 하자
OK! 여기까지...