본문 바로가기
SAP/ABAP

[SAP ABAP] 스마트폼(Smart forms) 생성

by 먼가먼가 2024. 8. 30.
728x90
SMALL
스마트폼(Smart Forms)란?

 

▶ 사용자가 인쇄 출력이나 이메일, PDF 등의 다양한 형식으로 문서를 생성하는 데 사용되는 도구입니다.

 

 

이번 포스팅에서는 스마트폼 생성과 CBO 프로그램 내에서 스마트폼양식을 출력하는 예제를 알아보겠습니다.

 

 

 

Step 1. Smart Form 생성

 

 

1) T-code : SMARTFORMS 실행

 - 스마트폼 이름을 입력하고 "신규 생성" 혹은 "기존서식을 복사"하여 생성합니다.

 

- 소스 오브젝트 선택

 

2) 레이아웃 설계

 - Smart Forms의 레이아웃을 설계합니다.

- 신규 윈도우 생성

 - 텍스트 노드 생성

 - 텍스트 입력하기

 - 활성화 후 디버깅(F8)

 

3) 출력 결과 확인

 - 생성된 스마트폼 펑션 모듈 실행

 

 - 입력한 텍스트가 출력되는 것을 확인할 수 있습니다.

 

 

Step 2. ABAP 프로그램 작성

 - Smart Forms에서 생성한 양식을 호출하기 위해 ABAP 프로그램을 작성합니다. 아래 ABAP 코드 예제입니다.

 

REPORT z_smartform_example.

DATA : LV_FM_NAME TYPE RS38L_FNAM,
            ls_control_parameters  TYPE SSFCTRLOP,
      ls_output_options     TYPE ssfcompop.




*--- 1. Smart Form의 함수 모듈 이름을 가져옴
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    FORMNAME                 = 'ZFORM01'  "Smart Form 이름
  IMPORTING
    FM_NAME                  = LV_FM_NAME
  EXCEPTIONS
    NO_FORM                  = 1
    NO_FUNCTION_MODULE       = 2
    OTHERS                   = 3.


IF SY-SUBRC <> 0.
  WRITE: 'Smart Form을 찾을 수 없습니다.'.
  EXIT.
ENDIF.




*--- 2. Smart Form 호출을 위한 파라미터 준비
PERFORM set_output_options     CHANGING ls_output_options.


*--- 3. Smart Form 호출
CALL FUNCTION LV_FM_NAME
  EXPORTING
    CONTROL_PARAMETERS = ls_control_parameters
    OUTPUT_OPTIONS     = ls_output_options
  EXCEPTIONS
    FORMATTING_ERROR   = 1
    INTERNAL_ERROR     = 2
    SEND_ERROR         = 3
    USER_CANCELED      = 4
    OTHERS             = 5.

IF SY-SUBRC <> 0.
  WRITE: 'Smart Form 출력 중 오류 발생'.
ENDIF.


FORM set_output_options CHANGING ps_output_options TYPE ssfcompop.

  CLEAR ps_output_options.

  ps_output_options-tdcopies       = 1.              "출력매수
  ps_output_options-tdimmed        = 'X'.            "즉시출력
  ps_output_options-tdnewid        = 'X'.            "스풀인쇄 시작
  ps_output_options-tddelete       = 'X'.            "인쇄후 삭제
  ps_output_options-tdlifetime     = '1'.
  ps_output_options-tddest         = 'FRONTEND'.

ENDFORM.

 

 

실행결과

 

 

 

 

 

감사합니다.

728x90
LIST