2

トランザクションAL11は、アプリケーションサーバーAFAIK上のファイルパスへの「ディレクトリパラメータ」のマッピングを返します。トランザクションAL11の問題は、そのプログラムがcモジュールのみを呼び出すことであり、そこで分析するためのselectステートメントまたは関数呼び出しの痕跡はほとんどありません。

たとえば、「DATA_DIR」を入力として、「E:\ usr \ sap \ IDS \ DVEBMGS00 \ data」を出力として受け取る汎用モジュールのように、コードでこれを動的に実行する機能が必要です。

このスレッドは同様のトピックに関するものですが、役に立ちません。

他の誰かが同じ問題を抱えています、そして彼はそれをここで非常によく説明します。

4

2 に答える 2

4

これらの値を取得する唯一の方法は、カーネルを直接使用することだと強く思います。それらのいくつかはアプリケーションサーバーによって異なる可能性があるため、データベースでそれらを見つけることができない可能性があります。あなたはこれを試すことができます:

TYPE-POOLS abap.

TYPES: BEGIN OF t_directory,
         log_name TYPE dirprofilenames,
         phys_path TYPE dirname_al11,
       END OF t_directory.

DATA: lt_int_list    TYPE TABLE OF abaplist,
      lt_string_list TYPE list_string_table,
      lt_directories TYPE TABLE OF t_directory,
      ls_directory   TYPE t_directory.

FIELD-SYMBOLS: <l_line> TYPE string.

START-OF-SELECTION-OR-FORM-OR-METHOD-OR-WHATEVER.
* get the output of the program as string table
  SUBMIT rswatch0 EXPORTING LIST TO MEMORY AND RETURN.
  CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
      listobject = lt_int_list.
  CALL FUNCTION 'LIST_TO_ASCI'
    EXPORTING
      with_line_break   = abap_true
    IMPORTING
      list_string_ascii = lt_string_list
    TABLES
      listobject        = lt_int_list.

* remove the separators and the two header lines
  DELETE lt_string_list WHERE table_line CO '-'.
  DELETE lt_string_list INDEX 1.
  DELETE lt_string_list INDEX 1.

* parse the individual lines
  LOOP AT lt_string_list ASSIGNING <l_line>.
*   If you're on a newer system, you can do this in a more elegant way using regular expressions
    CONDENSE <l_line>.
    SHIFT <l_line> LEFT DELETING LEADING '|'.
    SHIFT <l_line> RIGHT DELETING TRAILING '|'.
    SPLIT <l_line>+1 AT '|' INTO ls_directory-log_name ls_directory-phys_path.
    APPEND ls_directory TO lt_directories.
  ENDLOOP.
于 2012-08-17T14:27:22.757 に答える
1

次を試してください

data : dirname type  DIRNAME_AL11.
CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_DATA'
                   ID 'VALUE' FIELD dirname.

または、独自のパラメーター(AL11-> configure)を使用する場合は、テーブルuser_dirからこれらを読み取ります。

于 2013-02-20T12:57:40.377 に答える