• 【転載】表示レイアウト実装方法


    ALVを出力する前に、選択画面でユーザにALVの出力レイアウトを指定してもらう場面があります。
    このトピックでは、購買組織を元に出力レイアウト選択機能を追加する例を取り上げて説明します。

     

    変数の定義を追加

    DATA: g_variant TYPE disvariant. 
    DATA:  VG_SAVE       TYPE CHAR1, 
               VG_EXIT       TYPE CHAR1, 
               VG_VARIANT    TYPE DISVARIANT, 
               VG_VARIANT_EX TYPE DISVARIANT.
    

    選択パラメータを追加

    PARAMETERS:     P_LAYOUT TYPE DISVARIANT-VARIANT. 
    

    初期化処理を追加

    初期化処理で、デフォルトのバリアント値を取得して自動提案します。

    INITIALIZATION. 
      VG_SAVE = 'A'.   "ユーザ定義レイアウトとグローバルレイアウトの両方を保存できます。 
      VG_VARIANT-REPORT = SY-REPID. 
      VG_VARIANT_EX = VG_VARIANT. 
       
    * バリアントの初期化 
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' 
        EXPORTING 
          I_SAVE        =  VG_SAVE 
        CHANGING 
          CS_VARIANT    =  VG_VARIANT_EX 
        EXCEPTIONS 
          WRONG_INPUT   = 1 
          NOT_FOUND     = 2 
          PROGRAM_ERROR = 3 
          OTHERS        = 4. 
      IF SY-SUBRC = 0. 
        P_LAYOUT = VG_VARIANT_EX-VARIANT. 
      ENDIF. 
    

    検索ヘルプ実装

    * AT SELECTION-SCREEN  選択画面:レイアウトのヘルプ設定 
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAYOUT . 
    * レイアウトのヘルプ設定 
    
    
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4' 
        EXPORTING 
          IS_VARIANT    = VG_VARIANT 
          I_SAVE        =  VG_SAVE 
        IMPORTING 
          E_EXIT        = VG_EXIT 
          ES_VARIANT    = VG_VARIANT_EX 
        EXCEPTIONS 
          NOT_FOUND     = 1 
          PROGRAM_ERROR = 2. 
    
      IF SY-SUBRC <> 0. 
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
      ELSE. 
        IF VG_EXIT = SPACE. 
          P_LAYOUT = VG_VARIANT_EX-VARIANT. 
        ELSE. 
        ENDIF. 
      ENDIF. 
    

    入力チェックを追加

    入力チェック処理で、入力されたレイアウトバリアント値が存在するかどうかをチェックします。

    AT SELECTION-SCREEN. 
    * バリアント存在チェック 
      IF P_LAYOUT IS NOT INITIAL. 
        VG_VARIANT-VARIANT = P_LAYOUT. 
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE' 
          EXPORTING 
            I_SAVE        = VG_SAVE 
          CHANGING 
            CS_VARIANT    = VG_VARIANT 
          EXCEPTIONS 
            WRONG_INPUT   = 1 
            NOT_FOUND     = 2 
            PROGRAM_ERROR = 3. 
        IF SY-SUBRC <> 0. 
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
        ENDIF. 
      ENDIF. 
    

    レイアウト選択値を反映

    汎用モジュールを呼び出してALV一覧出力を行う時、汎用モジュールの入力パラメータとしてレイアウトの選択値を受け渡します。

     CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
        EXPORTING 
    *       i_callback_pf_status_set = 'PF_STATUS_SIMP' 
         it_fieldcat        = gtbl_fieldcat 
    *      i_structure_name = 'YLWF_AL' 
    *     is_layout          = g_layout 
          IS_VARIANT    = VG_VARIANT 
          i_save             = VG_SAVE 
       TABLES 
          t_outtab           = gtbl_account_doc 
        EXCEPTIONS 
    *      program_error      = 0 
         OTHERS             = 0 
    

      

    本文はhttp://sapecc.insidekb.jp/doku.php/96/36/46/38

  • 相关阅读:
    素数
    java线程和线程池的使用
    Android SnackBar:你值得拥有的信息提示控件
    Java读取数据库数据生成柱状图
    hdu 2255奔小康赚大钱 KM算法模板
    Codeforces 446C —— DZY Loves Fibonacci Numbers(线段树)
    设计模式_门面模式
    hdu 1811 Rank of Tetris 并查集+拓扑排序
    使用openstack的虚拟机模版注意事项
    【JAVA】merge two array by order
  • 原文地址:https://www.cnblogs.com/yjyongil/p/11964131.html
Copyright © 2020-2023  润新知