ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-11-30 21:51:58  阅读:256  来源: 互联网

标签:表示 SY VG TYPE VARIANT ALV SAVE 方法


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

标签:表示,SY,VG,TYPE,VARIANT,ALV,SAVE,方法
来源: https://www.cnblogs.com/yjyongil/p/11964131.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有