のスマートフォーム SAP ABAP

⚡ スマートサマリー

のスマートフォーム SAP ABAPは、プリンター、ファックス、電子メール、またはインターネットへの出力に対応した、大量印刷用のフォームを作成および保守します。このページでは、アーキテクチャ、フォームビルダーのノード、ウィンドウ、テーブル、テンプレート、スタイル、および生成される関数モジュールについて説明します。

  • 🖨️ 主な目的: Smart Formsは、大量の印刷文書を作成するだけでなく、生成されたXMLを介してプリンター、ファックス、電子メール、インターネットへの出力にも対応しています。
  • 🕰️ 原産地: SAP 1998年にスマートフォームを導入し、 SAPスクリプト形式なので、開発、保守、および移植が容易です。
  • 🧱 グラフィックデザイン: フォームビルダーではノードをドラッグ&ドロップで配置できるため、スクリプト言語を一行も記述することなくフォームをカスタマイズできます。
  • ⚙️ 生成されたモジュール: フォームをアクティブ化すると関数モジュールが生成され、印刷プログラムは実行時にSSF_FUNCTION_MODULE_NAMEを使用してその名前を取得します。
  • 🪟 ウィンドウルール: 1ページには最大で1つのメインウィンドウがあり、それが複数のページをまたいで表示されます。一方、各セカンダリーウィンドウは静的なコンテンツのみを表示します。
  • 📐 テーブルまたはテンプレート: テーブルはデータに応じて動的に拡張されますが、小切手やチケットなど、出力サイズが固定されている場合はテンプレートが使用されます。
  • 🎨 スマートなスタイル: 段落書式、文字書式、色、バーコードはスマートスタイルに保存され、複数のフォームで再利用されます。

SAP ABAPスマートフォーム

Smart Formsとは何ですか? SAP ABAP?

SAP スマートフォームは、大量印刷用のフォームを作成および管理するために使用されます。 SAP システム。出力媒体として SAP スマート フォームは、プリンター、ファックス、電子メール、またはインターネット (生成された XML 出力を使用) をサポートします。

SAP 1998年にSmartFormsを導入し、 SAP スクリプト。SmartFormsは、開発、保守、転送が簡単です。 SAP 脚本。

Smart FormsとSapScriptsの比較

  • SmartForms では複数のページ形式が可能ですが、SmartForms ではそうではありません。 SAP スクリプト
  • メイン ウィンドウなしで SmartForm を使用することも可能です。
  • ルーチンは SmartForms ツールで作成できます。
  • SmartForms は、アクティブ化されると汎用モジュールを生成します。
  • SmartForms ではラベルを作成できません。
基準 スマートフォーム SAPスクリプト
ページフォーマット 1つのフォームに複数のページ形式が含まれています フォーム1枚につき1ページ形式
メインウィンドウ 必須ではありません メインウィンドウは1つだけ必要です
ルーチン 用紙自体の中に書かれている 別の印刷プログラムに記載されています
アクティベーション 関数モジュールを生成します 関数モジュールは生成されません
ラベル 作成できません 作成可能

スマートフォームの利点

  • 完全にグラフィカルなユーザーインターフェースのおかげで、プログラミングの知識がなくてもフォームの適応が容易になります。
  • スマートフォームを有効化すると、システムは実行時に汎用モジュールを自動的に生成します。
  • 変更を加えるには、ドラッグ アンド ドロップ、カット アンド ペーストを使用する必要があります。 これらのアクションには、コーディング行の作成やスクリプト言語の使用は含まれません。
  • 静的テーブルと動的テーブルを挿入できます。 これには、表の個々のセルの改行、表の見出しと小計のイベントのトリガー、出力前のデータの並べ替えが含まれます。
  • スマート フォームを使用すると、フォームの一部として、または背景グラフィックとして表示できるグラフィックを含めることができます。印刷中に、ユーザーは必要に応じて背景グラフィックを非表示にすることができます。
  • 生成されたファイルを使用して Web パブリッシングが可能です XML 出力

Archiの構造 SAP スマートフォーム

Archiの構造 SAP スマートフォーム

アーキテクチャ図は、関連する3つのレイヤーを示しています。フォームはフォームビルダーで設計され、アクティベーションによって関数モジュールが生成され、印刷プログラムがそのモジュールをアプリケーションデータとともに呼び出します。最初のレイヤーの設計手順については、次に説明します。

スマートフォームガイド

それを見てみましょう SAP  

  1. トランザクションを入力してください スマートフォーム 取引コードボックスに入力します。
  2. 次の画面でフォーム名を入力し、「作成」をクリックします。

スマートフォームガイド

次の画面は XNUMX つのセクションに分かれています。

スマートフォームガイド

ナビゲーションウィンドウ ノードとサブノードで構成されます。 sap フォームに属するすべての要素 (テキスト、ウィンドウなど) が含まれています。

  • メンテナンスウィンドウ 要素の属性を示します
  • フォームプリンター ウィンドウにはページのレイアウトが表示されます

スマートフォームを作成するときはいつでも、 SAP 関数モジュールを作成/生成します。 SAPスクリプト、 SAP フォームを使用すると言語を変更できます。

ナビゲーションウィンドウには以下が表示されます

グローバルデータ宣言 : ここで定義されたデータは、コーディング目的でスマートフォーム全体で使用できます。

フォームインターフェイス : ここでは、Print プログラムからスマートフォームに渡されるすべてのデータが定義されます。

スマートフォームガイド

ページを右クリックすると、新しいページ、ウィンドウ、グラフィック、またはアドレスを作成できます。

スマートフォームガイド

印刷は「次のページ」フィールドに基づいて行われます。

ただし、処理はナビゲーション ウィンドウの順序に従って行われます。

スマートフォームガイド

背景画像とグラフィックスについては、白黒またはカラーのビットマップ画像を選択でき、標準テキストの形式で保存されます。 スマートフォーム画面から迂回してフォームグラフィックス画面を開くこともできます。 トランザクションコード: Se78

スマートフォームガイド

Smart Form ウィンドウでのグラフィック設定 -

スマートフォームガイド

Windows スマートフォームで

Windows スマートフォームで

2つのタイプがあります Windows

  1. メイン
  2. 二次

注意すべき重要なポイント

  • 1ページに複数のメインウィンドウを表示することはできません。複数のセカンダリウィンドウを表示できます。
  • セカンダリ ウィンドウに印刷するものは何でも、静的である必要があります。(購買発注に 20 行あり、ページ制約がある場合、行はメイン ウィンドウの次のページに繰り越されます。つまり、先行コンテンツと後続コンテンツ タイプでは、メイン ウィンドウに順番に印刷されます。これはセカンダリ ウィンドウでは許可されません。

Windows スマートフォームで

メイン ウィンドウ内で、フォーム出力をカスタマイズするための導入としてテキストを追加できます。

Windows スマートフォームで

各ウィンドウの出力オプションにより、配置する線のサイズ、幅、色、背景が決まります。

Windows スマートフォームで

Smartforms には、中央住所管理で維持される住所番号を指定するオプションがあります。 アドレスは ADRC テーブルから直接取得され、フォームに入力されます。

Windows スマートフォームで

Smartformsでは、通常のエディタと

Windows スマートフォームで

そしてグラフィックエディター。

Windows スマートフォームで

この設定は、ユーティリティの構成エディターを使用して変更できます。

窓際のテーブル

テーブル ペインターでは、クライアントの要件に応じて形式を描画できます (例: 見出し、サブ見出し、項目、小計、総計など)。

テーブル レイアウトを使用して、次のことを決定できます。

  • 行とセルの数
  • 各行の高さ
  • 各セルの幅
  • ウィンドウ内のテーブルの配置

Windows スマートフォームで

表には、表で使用されるさまざまな線の種類が示されています。 線の種類は、各セルのサイズと各線のセルの数を定義します。

Windows スマートフォームで

スマートフォームプログラミングフロー

とき SAP スマート フォーム テンプレートが作成され、ユーザーはスマート フォーム ビルダーを使用してフォーム レイアウトを作成し、スマート フォーム テンプレートで必要なフィールド、条件、および特別なプログラミング指示を定義します。

フォームの設計が完了したら、印刷プログラムでフォームをテストしたりアクセスしたりする前に、フォームをアクティブ化する必要があります。フォームをアクティブ化すると、フォームのすべての処理を処理する汎用モジュールの生成が開始されます。

この汎用モジュールは、アプリケーションプログラム/印刷プログラムと対話して、指定されたデバイスのユーザー定義出力メディアに出力を作成します。

スマートフォームの場合、スマートフォームの処理には2つの機能モジュールを使用します。 最初の汎用モジュールに、スマート フォームの名前をインポート パラメータとして渡します。 これにより、実際にスマートフォームを呼び出す動的に生成された汎用モジュールの名前が返されます。

スマートフォーム名は関数モジュールに渡すことができます – 'SSF_FUNCTION_MODULE_NAME'

スマートフォームプログラミングフロー

これにより、参照されるスマートフォームの汎用モジュール名が返されます。

スマートフォームプログラミングフロー

印刷プログラムは FM を呼び出します。 「SSF_FUNCTION_MODULE_NAME」 実行時に関数モジュール名を取得します。 その後、取得した関数モジュールを呼び出してスマートフォームを実行します。

スマートフォームプログラミングフロー

印刷プログラムからスマートフォームを呼び出す方法

上記で説明した2段階の呼び出しは、常に同じ方法で記述されます。プログラムはまず生成された名前を解決し、次にアプリケーションデータを使用してそれを実行します。

  1. 関数モジュール名を解決します。 フォーム名をSSF_FUNCTION_MODULE_NAMEに渡してください。生成される名前はシステムごとに異なるため、ハードコーディングしてはいけません。
  2. 生成されたモジュールを動的に呼び出す: 解決済みの名前を保持する変数を使用して CALL FUNCTION 関数を使用し、フォームインターフェースで定義されたパラメータを通してデータを渡します。
  3. 出力制御: 印刷ダイアログを非表示にするかプレビューを要求するには、制御構造SSFCTRLOPに値を設定し、出力デバイスをSSFCOMPOPに値を設定します。
  4. 例外処理: 生成されたモジュールはFORMATTING_ERROR、INTERNAL_ERROR、SEND_ERROR、およびUSER_CANCELEDを発生させるため、呼び出し後にSY-SUBRCを確認する必要があります。
DATA: lv_fm_name TYPE rs38l_fnam,
      ls_control TYPE ssfctrlop,
      ls_output  TYPE ssfcompop.

* 1. Get the name of the generated function module
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = 'Z_SMART_INVOICE'
  IMPORTING
    fm_name            = lv_fm_name
  EXCEPTIONS
    no_form            = 1
    no_function_module = 2
    OTHERS             = 3.

IF sy-subrc <> 0.
  MESSAGE e001(zsf).          " Form not found
ENDIF.

* 2. Call the generated module with the form data
ls_control-no_dialog = 'X'.
ls_control-preview   = 'X'.

CALL FUNCTION lv_fm_name
  EXPORTING
    control_parameters = ls_control
    output_options     = ls_output
    is_header          = ls_header
  TABLES
    it_items           = lt_items
  EXCEPTIONS
    formatting_error   = 1
    internal_error     = 2
    send_error         = 3
    user_canceled      = 4
    OTHERS             = 5.

⚠️ 警告: 生成される関数モジュール名(例:/1BCDWB/SF00000123)は、システムごとに異なります。必ずSSF_FUNCTION_MODULE_NAMEを使用して解決してください。そうしないと、移送後にプログラムが失敗します。

テンプレ

テンプレートは、出力の正確なサイズがわかっている場合、または出力が固定形式である場合に使用できます。

例: 税金フォーム/小切手/航空券フォーム/鉄道チケット: これらはすべてテンプレートを使用します。

テーブルとテンプレートの大きな違いは、テーブルでは高さが動的に変化する点です。テンプレートでは、行を「ライン」と呼びます。

のテンプレート SAP ABAP

スマートなスタイル

スマート スタイルには次のものが含まれます。

  • スマート スタイルのデフォルト値を含むヘッダー データ
  • インデントと間隔、フォント属性、タブ、アウトラインと番号付けを含む段落フォーマット
  • 効果(上付き文字、下付き文字)、バーコード、フォント属性を含む文字形式
  • 段落または文字形式の色と下線

トランザクション「smartforms」/「smartstyles」を使用してスマート スタイルを作成できます。

のテンプレート SAP ABAP

💡ヒント: スマートスタイルは、各テキストノードではなく、フォーム属性に割り当ててください。そうすれば、スタイルの変更がフォーム内のすべての段落に反映されます。

このチュートリアルはこれですべてです

よくあるご質問

テーブルは内部テーブルの行数に応じてサイズが変化するため、実行時に高さが変わります。一方、テンプレートは行数とセル数が固定されており、小切手、チケット、税務申告書などに適しています。

制御構造にGETOTFを設定し、生成モジュールから返されたOTFデータを読み込み、それを関数モジュールCONVERT_OTFに渡します。結果として、メール送信またはダウンロード可能なバイナリテーブルが生成されます。

いいえ。スマートフォームはクライアントに依存しないため、有効化後はシステムのすべてのクライアントで利用できます。 SAPスクリプト形式はクライアントに依存するため、SCC1でコピーする必要があります。

AIアシスタントは、SSF_FUNCTION_MODULE_NAME呼び出しや例外処理を含む印刷プログラムを作成します。レイアウト自体はグラフィカルオブジェクトであるため、フォームビルダー内でノードごとに配置されます。

はい。スマートフォームは多くの場面で大量印刷のデフォルトとして使われています。 SAP Adobe Formsはインタラクティブな文書作成を対象とするシステムですが、AIツールは主にフォームの読み取りや文書作成といった周辺作業を高速化します。