SAP 価値に関するプロセスとヘルプ要求に関するプロセス

⚡ スマートサマリー

Process On Value-Request と Process On Help-Request は、F4 と F1 の背後にある画面イベントです。 SAP ABAP。このページでは、イベント、それらをトリガーするFIELDステートメント、およびドキュメントや入力可能な値を表示する関数モジュールについて説明します。

  • POHの目的: ヘルプ要求処理はF1キーに反応し、ABAPディクショナリに保存されているフィールドドキュメントを表示します。
  • 🔎 POVの目的: PROCESS ON VALUE-REQUESTはF4キーに反応し、値によって定義された可能な入力項目、チェックテーブル、または検索ヘルプを表示します。
  • 🧾 フォールバックルール: POHイベントが存在しない場合、システムはデータ要素のドキュメントを参照しますが、それも存在しない場合は何も表示しません。
  • 🚫 輸送制限: POH の FIELD ステートメントは、ヘルプを表示するだけなので、画面フィールドをプログラムに転送しません。
  • 📚 ヘルプモジュール: HELP_OBJECT_SHOW_FOR_FIELD はデータ要素のドキュメントを表示し、HELP_OBJECT_SHOW はあらゆる SAPスクリプトドキュメント。
  • ???? バリューモジュール: F4IF_FIELD_VALUE_REQUEST は辞書入力ヘルプを開始し、F4IF_INT_TABLE_VALUE_REQUEST はプログラム内で作成されたリストを表示します。
  • ↩️ 戻りパス: DYNPPROG、DYNPNR、およびDYNPROFIELDは選択された値を画面フィールドに返し、RETURN_TABはそれをテーブルに返します。

SAP 価値に基づくプロセスとヘルプリクエストに基づくプロセス

POHとPOVとは何ですか?

まず、スクリーンフローロジックとその用途について何も知らない場合は、 SAPチュートリアルを確認することをお勧めします 対話プログラム.

POHとPOVは、ユーザーからのヘルプ要求に応答する2つの画面イベントです。POHはF1キーに反応してフィールドの意味を説明し、POVはF4キーに反応してそのフィールドが受け入れる値を一覧表示します。どちらも、PBOとPAIの横にある画面のフローロジックで宣言されています。

基準 POH(ヘルプリクエスト処理) POV(Process On Value-Request)
引き起こされた F1キー F4キー、または「可能な入力項目」ボタン
目的 このフィールドの意味を説明します フィールドが受け入れる値を提示します
デフォルトソース ABAPディクショナリにおけるデータ要素のドキュメント 固定値、チェックテーブル、または検索ヘルプ
データ転送 いいえ、フィールドは表示されるだけです 選択された値が画面のフィールドに書き戻されます
典型的な機能モジュール HELP_OBJECT_SHOW_FOR_FIELD F4IF_INT_TABLE_VALUE_REQUEST

それでは、POHとPOVについて詳しく見てみましょう

ヘルプリクエスト (POH) のプロセス: F1 ヘルプ

  • F1キーが押されるたびに、指定されたデータ要素のPOHイベントが実行されます。
  • 画面の処理ロジックに「PROCESS ON HELP-REQUEST」イベントが存在しない場合、ABAPディクショナリ内の該当フィールドのドキュメントが基準として参照され、表示されます。それでも存在しない場合は、ヘルプは表示されません。
  • フィールド ヘルプ ドキュメントを表示するには、POH イベントで次の画面フロー ロジックをコーディングする必要があります。
PROCESS ON HELP-REQUEST
FIELD <f> [MODULE <mod>] WITH <num>
  • フィールドに画面固有のデータ要素ドキュメントがある場合、番号を指定して表示することができます。 。
  • 人数、個数、総数リテラルまたは変数を指定できます。 変数は宣言され、対応する ABAP プログラム内で入力される必要があります。
  • FIELD ステートメントは画面フィールドの内容を転送しないことに注意してください。 PROCESS ON HELP-REQUEST イベントの ABAP プログラムに追加します。 ヘルプドキュメントが表示されるだけです。 それでおしまい。

モジュールABAP プログラムでは、通常の PAI モジュールと同様に定義されます。モジュールの処理ロジックは、該当するフィールドに適切なヘルプが表示されることを保証する必要があります。テキスト フィールドを含む別の画面を呼び出す代わりに、適切なヘルプを表示するには、以下のいずれかの関数モジュールを使用する必要があります。 SAPスクリプト文書

HELP_OBJECT_SHOW_FOR_FIELD

  • この汎用モジュールは、ABAP ディクショナリからの構造またはデータベーステーブルのコンポーネントのデータ要素ドキュメントを表示します。
  • コンポーネントと構造またはテーブルの名前をインポート パラメーター FIELD および TABLE に渡します。

HELP_OBJECT_SHOW

  • この機能モジュールを使用して、 SAPスクリプトドキュメント。
  • ドキュメント クラス (たとえば、一般テキストの場合は TX、データ要素ドキュメントの場合は DE) とドキュメントの名前をインポート パラメータ DOKCLASS および DOKNAME に渡す必要があります。
  • 技術的な理由により、行タイプがTの空の内部テーブルも渡す必要があります。LINE 関数モジュールのテーブルパラメータへ。

F1は、そのフィールドについて説明しています。次のイベントでは、そのフィールドに入力できる項目が一覧表示されます。

値のプロセス (POV): F4

  • ユーザーが機能「可能なエントリ」(F4) を選択すると、開発者によって保存されている場合、システムはフィールドの可能な入力値 (値、チェックテーブル、マッチコード) を表示します。
  • ユーザーが「可能なエントリ」を呼び出した場合、イベント PROCESS ON VALUE-REQUEST は常に処理されます。
  • 画面上のフィールドの可能な値を定義するには、画面フロー ロジックの POV イベントで以下を定義する必要があります。
PROCESS ON VALUE-REQUEST

FIELD field name MODULE module name
  • 上記で定義したモジュール内の可能な値には、一般的な汎用モジュールを使用する必要があります。 HELP_VALUES_GET_WITH_TABLE ABAP ディクショナリから可能な値を取得します。

入力ヘルプに使用できる関数が他にもいくつかあります。

F4IF_FIELD_VALUE_REQUEST

  • ABAP ディクショナリの入力ヘルプを動的に呼び出します。
  • ABAP ディクショナリの構造またはデータベーステーブルのコンポーネント名を、インポートパラメータ TABNAME および FIELDNAME で汎用モジュールに渡すことができます。
  • 汎用モジュールは ABAPディクショナリ このコンポーネントの入力ヘルプ。 関連する画面フィールドがすべて読み取られます。
  • インポートパラメータ DYNPPROG、DYNPNR、および DYNPROFIELD を指定すると、ユーザーの選択が画面上の対応するフィールドに返されます。
  • テーブル パラメータ RETURN_TAB を指定すると、代わりに選択内容がテーブルに返されます。
MODULE VALUE_CARRIER INPUT.

CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'

EXPORTING

TABNAME    = 'DEMOF4HELP'

FIELDNAME  = 'CARRIER1'

DYNPPROG   =  PROGNAME

DYNPNR  =  DYNNUM

DYNPROFIELD= 'CARRIER'.

ENDMODULE.

F4IF_INT_TABLE_VALUE_REQUEST

  • この汎用モジュールは、 ABAPプログラム.
  • 値リストはテーブルパラメータ VALUE_TAB として汎用モジュールに渡されます。
  • インポートパラメータ DYNPPROG、DYNPNR、および DYNPROFIELD を指定すると、ユーザーの選択が画面上の対応するフィールドに返されます。
  • テーブル パラメータ RETURN_TAB を指定すると、代わりに選択内容がテーブルに返されます。
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING

RETFIELD         =  'CONNID'
DYNPPROG         =  PROGNAME
DYNPNR           =  DYNNUM
DYNPROFIELD      =  'CONNECTION'
VALUE_ORG        = 'S'
TABLES
VALUE_TAB        = VALUES_TAB.

POHとPOVについては以上です。 疑問がある場合はコメントを残してください。

内部テーブルからF4ヘルプを作成する方法

ABAP ディクショナリに存在しない値リストは、プログラム内で作成され、F4IF_INT_TABLE_VALUE_REQUEST に渡されます。以下の手順で、画面フィールドの F4 ヘルプが正しく動作するようになります。

  1. 値テーブルを宣言します。 画面に書き戻される値を格納する最初の列を持つ内部テーブルを作成します。このテーブルは、PBOモジュールまたは値要求モジュール自体でデータを入力します。
  2. フローロジックにフィールドを登録します。 画面に「PROCESS ON VALUE-REQUEST」を追加し、そのフィールドを「FIELD … MODULE …」に接続して、F4キーが押されたときにモジュールが実行されるようにします。
  3. 関数モジュールを呼び出す: 列名を RETFIELD に、画面フィールド名を DYNPROFIELD に、そしてリストが構造化テーブルとして渡されるため VALUE_ORG = 'S' を渡してください。
  4. 値を返します: DYNPPROGとDYNPNRはプログラムと画面を識別するため、選択された行は追加のコードなしで画面フィールドに直接書き込まれます。
  5. 試して: 画面を起動し、フィールド上でF4キーを押して、リストが表示され、選択範囲がフィールドに反映されていることを確認してください。
* Flow logic of the screen
PROCESS ON VALUE-REQUEST.
  FIELD spfli-connid MODULE f4_connid.

* Module in the ABAP program
MODULE f4_connid INPUT.

  DATA: lt_values TYPE STANDARD TABLE OF spfli.

  SELECT * FROM spfli INTO TABLE lt_values
    WHERE carrid = spfli-carrid.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'CONNID'
      dynpprog    = sy-repid
      dynpnr      = sy-dynnr
      dynprofield = 'SPFLI-CONNID'
      value_org   = 'S'
    TABLES
      value_tab   = lt_values.

ENDMODULE.

💡ヒント: リストを入力する前に、関数モジュール DYNP_VALUES_READ を使用して別の画面フィールドの値を読み取ります。こうすることで、既に入力済みの航空会社の接続情報など、依存する F4 ヘルプが構築されます。

よくあるご質問

どちらでもありません。F1キーとF4キーは画面を中断して独自のイベントを実行し、その後同じ画面に戻ります。通常のPAI処理は、ユーザーが通常のファンクションコードをトリガーしたときにのみ開始されます。

データ要素またはチェックテーブルに添付された検索ヘルプによって、既にF4リストが生成されます。POVコーディングが必要となるのは、値が実行時に計算される場合、または画面上の他のフィールドに依存する場合のみです。

列名をDYNPROFIELDに渡してGET CURSORを使用します。 LINE 該当する行を検索します。その後、関数モジュールは次のPBOで、その値をコントロールの正しい行に書き込みます。

はい。ABAP開発ツールのAIアシスタントは、POVフローロジック、値テーブルを埋めるSELECT文、および適切なRETFIELDとDYNPROFIELDパラメータを使用したF4IF_INT_TABLE_VALUE_REQUESTの呼び出しを記述します。

いいえ。F1 は依然として ABAP ディクショナリに保存されているドキュメントを読み取ります。AI アシスタントなど SAP Jouleは画面の横に平易な言葉で質問に答える機能を備えており、現場のドキュメントを置き換えるのではなく、補完する役割を果たします。