2

おそらく(関数呼び出しのPOVから)エクスポート・パラメータが欠落していると考えています。

関数呼び出しで渡すパラメーターはREUSE_ALV_GRID_DISPLAY次のとおりです。

   i_callback_program,
   i_callback_pf_status_set,
   i_callback_user_command,
   is_layout,
   it_fieldcat,
   i_save
Tables:
   t_outtab

そして、例外と処理。

私が渡す内部テーブルにデータがあることを確認しました。

私が提示した情報で十分だと思いますが、本当にコードを見る必要がある場合は、そうします。

私は初心者で、どんな助けもいただければ幸いです。

ありがとう。

4

5 に答える 5

1

編集: ああ、もう 1 つ - 本当に POV (Value-Request = F4 のプロセス) にいる場合は、できることに制限があることに注意してください。START-OF-SELECTION の直後に単純なレポートでコードを試してください。それが機能する場合は、POV モジュールで同じコードを試してください。

===

構造名を渡さない場合は、完全な (!) フィールド カタログを渡すようにする必要があります。そうしないと、ALV グリッドが不規則に動作するか、まったく動作しなくなる可能性があります。汎用モジュール LVC_FIELDCATALOG_MERGE および LVC_FIELDCAT_COMPLETE を (この順序で) 使用して、クラスまたは REUSE_ALV_GRID_DISPLAY_LVC で使用できる LVC フィールド カタログを取得します。

于 2010-09-18T12:55:35.703 に答える
1

ここで数人が REUSE_ALV_GRID_DISPLAY の使用を提案しました。これは物事を成し遂げるための一般的な方法だと確信しています (以前は自分で使用していました) が、最近 sap delta コースを受講したので、もう使用しないように強く勧められました (調べることができます。REUSE_ALV_GRID_DISPLAY はSAP によって正式にサポートされなくなりました)。

代わりに、CL_SALV_TABLE を使用してください。ドキュメントは次のとおりです

実際に使ってみるとかなり便利です。

于 2010-11-09T15:35:47.703 に答える
1

ALV を使用するにはいくつかの方法があるため、コードに関する詳細情報が必要になる場合があります。

  • 最初の方法は、汎用モジュール REUSE_ALV_GRID_DISPLAY を使用することです。これにより、テーブルの内容が出力 Dynpro に直接表示されます。必要なのが表示だけの場合は、これが最も単純なので、それを選択してください: テーブル構造が辞書にある場合、この呼び出しは次のように単純にすることができます (これにより、構造体のすべてのメンバーが列として表示されます)。

myreport = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
          i_callback_program          = myreport
          it_excluding                = exclude_tab
       TABLES
          t_outtab                    = display_data
       EXCEPTIONS
          program_error               = 1
          OTHERS                      = 2.

プログラムで構造が宣言されている場合は、項目カタログを作成する必要があります。次のコードは、基本として機能できます。

FORM fill_fieldcat CHANGING p_fieldcat   TYPE slis_t_fieldcat_alv.

* Data definition
  DATA ls_fieldcat  TYPE slis_fieldcat_alv.

* Macro definition
  DEFINE append_fieldcat.
    clear ls_fieldcat.

    ls_fieldcat-fieldname      = &1. * name of the field in struct
    ls_fieldcat-tabname        = &2. * name of the table
    ls_fieldcat-row_pos        = &3. * column
    ls_fieldcat-ref_fieldname  = &4. * field in ref table
    ls_fieldcat-ref_tabname    = &5. * ref table
    ls_fieldcat-outputlen      = &6. * size of output
    ls_fieldcat-seltext_m      = &7. * text (space if using the element typetext)
    ls_fieldcat-ddictxt        = 'M'.
    ls_fieldcat-key            = &8.  * is this a key field in table
    ls_fieldcat-emphasize      = &9.  * emphisze  column display

    append ls_fieldcat to p_fieldcat.
  END-OF-DEFINITION.

* Init.
  REFRESH p_fieldcat.

* Append fielcatalog for ALV
  append_fieldcat:
  'FORMATIONCODE' 'DISPLAY_TAB' 1 'SHORT' 'HRP1000' 12    'Code Stage'     space space,
  'FORMATIONTEXT' 'DISPLAY_TAB' 1 'STEXT' 'HRP1000' 20    'Libelle Stage'  space space,
  'SESSIONID'     'DISPLAY_TAB' 1 'OBJID' 'HRP1000' space 'Session'        space space,
  'BEGDA'         'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Debut'          space space,
  'ENDDA'         'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Fin'            space space,
ENDFORM.                    "fill_fieldCat

次に、フォームを呼び出してフィールド カタログを作成し、それを関数呼び出しの it_fieldcat パラメーターで使用します。

  • 2 番目の方法は、ABAP オブジェクトを使用することです。この使用例については、check se83 を使用してください。根拠は次のとおりです。

Dynpro で、指定された名前 ("ALV_CONT") を持つカスタム コンテナを宣言します。次に、dynpro の PBO でコンテナを初期化し、ALV オブジェクトを内部に配置します。

* global variables :
DATA : delegationlist_table     TYPE REF TO cl_gui_alv_grid,
       delegationlist_container TYPE REF TO cl_gui_custom_container.
data : gs_layout   TYPE lvc_s_layo.

PBOで

  IF delegationlist_container IS INITIAL.
*   create a custom container control for our ALV Control
    CREATE OBJECT delegationlist_container
      EXPORTING
        container_name              = 'ALV_CONT'
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5.

*   create an instance of alv control
    CREATE OBJECT delegationlist_table
      EXPORTING
        i_parent = delegationlist_container.

*   Set a titlebar for the grid control
    gs_layout-grid_title = 'Délégations'.
    gs_layout-sel_mode = 'A'.
    gs_layout-cwidth_opt ='X'.

*   set table as data source
*   the struct name *must* be uppercase
*   the table must have this struc
    CALL METHOD delegationlist_table->set_table_for_first_display
      EXPORTING
        i_structure_name = 'ZPRT_DELEGATIONLIST'
        is_layout        = gs_layout
      CHANGING
        it_outtab        = delegationlist.

  ENDIF.

この助けを願って、
よろしく

ギヨーム・パトリー

于 2010-09-17T08:26:30.743 に答える
0

出力内部テーブルをFMパラメータ「t_outtab」に渡します。それはあなたのデータ出力を印刷します。

于 2011-03-15T03:40:51.917 に答える
0

努力していただきありがとうございます。しかし、結局のところ、私が犯した間違いは、フィールド カタログを作成する際にフィールド名を大文字にしなかったことでした。そのような初心者の間違い。近いうちに同じ過ちを繰り返すことはないと思います。

-ミグ

于 2010-10-07T02:38:59.710 に答える