SAP ABAP ALV报表练习 如图 将上两张图中的数据用ALV表示 要求如图 大神快来吧!!!写详细点有加分!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP ABAP ALV报表练习 如图 将上两张图中的数据用ALV表示 要求如图 大神快来吧!!!写详细点有加分!相关的知识,希望对你有一定的参考价值。

唉,算你小子走运,我刚写了本Simple程序就是类似这样的,100分给哥拿来吧少年!这么专业的回答你哪里找去!有加分的话,可以百度联系我,趁我闲的蛋疼这几天,免费教教你。



*&----------------------------------------------------------------------

*& プログラムID   : ZZREPO54

*& 作成者         : 尹先森

*& 作成日         : 2013/04/18

*& 処理概要       : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

*&                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

*&---------------------------------------------------------------------*

*& 変更履歴

*& No   変更日     管理番号    変更者    変更内容

*& 0001 YYYY/MM/DD XXX-XX-XXX  DYGXXXX   XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

*&----------------------------------------------------------------------

REPORT  ZZREPO54_ALV.

TYPE-POOLS: SLIS.

*----------------------------------------------------------------------*

*   TYPES定义

*----------------------------------------------------------------------*

TYPES:

*----- テスト结果

  BEGIN OF TYP_TH_TEST,

    ZZCLASS   LIKE ZZTEST_T-ZZCLASS,             " クラス

    ZZSTDNO   LIKE ZZTEST_T-ZZSTDNO,             " 学生番号

    ZZTENKOK  LIKE ZZTEST_T-ZZTENKOK,            " 国语点数

    ZZTENSAN  LIKE ZZTEST_T-ZZTENSAN,            " 算数点数

    ZZTENRIK  LIKE ZZTEST_T-ZZTENRIK,            " 理科点数

    ZZTENSHA  LIKE ZZTEST_T-ZZTENSHA,            " 社会点数

    ZZNAME    LIKE ZZNUMBER_T-ZZNAME,            " 名前

  END   OF TYP_TH_TEST,

  TYP_TD_TEST TYPE STANDARD TABLE OF TYP_TH_TEST,

*----- 学生氏名

  BEGIN OF TYP_TH_NAME,

    ZZNUMBER  LIKE ZZNUMBER_T-ZZNUMBER,          " 学生番号

    ZZNAME    LIKE ZZNUMBER_T-ZZNAME,            " 氏名

  END   OF TYP_TH_NAME,

  TYP_TD_NAME TYPE STANDARD TABLE OF TYP_TH_NAME.

*----------------------------------------------------------------------*

*   DATA定义

*----------------------------------------------------------------------*

DATA:

*----- テスト结果内部テーブル

  TD_TEST     TYPE TYP_TD_TEST,

  TH_TEST     LIKE LINE OF TD_TEST,

*----- 学生氏名内部テーブル

  TD_NAME     TYPE TYP_TD_NAME,

*----- ログー

  TD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

*----------------------------------------------------------------------*

*   PARAMETERS/SELECT-OPTIONS定义

*----------------------------------------------------------------------*

SELECT-OPTIONS:

  S_CLASS FOR TH_TEST-ZZCLASS                    " 选択条件:クラス

              OBLIGATORY                         " 必须

              MATCHCODE OBJECT ZZMC.             " 検索ヘルプ

*----------------------------------------------------------------------*

*   START-OF-SELECTION

*----------------------------------------------------------------------*

START-OF-SELECTION.

*----- 初期化処理

  PERFORM INTBL_SHORI.

*----- データ选択処理

  PERFORM SELECT_DATA.

*----- ログー编集

  PERFORM FILEDCAT_EDT.

*----- ALV出力処理

  PERFORM ALV_OUTPUT.

*----------------------------------------------------------------------*

* END-OF-SELECTION

*----------------------------------------------------------------------*

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*&      Form  INTBL_SHORI

*&---------------------------------------------------------------------*

*       初期化処理

*----------------------------------------------------------------------*

FORM INTBL_SHORI .

*----- グルバールデータのクリア

  CLEAR:

    TH_TEST,                                     " テスト结果ヘッダ

    TD_TEST,                                     " テスト结果内部テーブル

    TD_NAME.                                     " 学生氏名内部テーブル

ENDFORM.                                         " INTBL_SHORI

*&---------------------------------------------------------------------*

*&      Form  SELECT_DATA

*&---------------------------------------------------------------------*

*       データ选択処理

*----------------------------------------------------------------------*

FORM SELECT_DATA .

  DATA:

*----- 学生氏名内部ヘッダ

    LTH_NAME TYPE TYP_TH_NAME.

  FIELD-SYMBOLS:

*----- テスト结果

    <LFS_TEST> TYPE TYP_TH_TEST.

*----- テスト结果テーブルより、クラスと等しいものを选択する

  SELECT ZZCLASS                                 " クラス

         ZZSTDNO                                 " 学生番号

         ZZTENKOK                                " 国语点数

         ZZTENSAN                                " 算数点数

         ZZTENRIK                                " 理科点数

         ZZTENSHA                                " 社会点数

    FROM ZZTEST_T                                " テスト结果テーブル

    INTO TABLE TD_TEST                           " テスト结果内部テーブル

   WHERE ZZCLASS IN S_CLASS.                     " 选択条件:クラス

*----- データが存在の场合

  IF SY-SUBRC = 0.

*----- スト结果内部テーブルのソート

    SORT:

      TD_TEST

      BY ZZCLASS ASCENDING                       " クラス

         ZZSTDNO ASCENDING.                      " 学生番号

*----- それ以外の场合

  ELSE.

    MESSAGE S000(YJZ) DISPLAY LIKE 'E'.          " データが存在しません

    LEAVE LIST-PROCESSING.                       " 选択画面を戻る

  ENDIF.

*----- 学生番号テーブルより、氏名を取得する

  SELECT ZZNUMBER                                " 学生番号

         ZZNAME                                  " 氏名

    FROM ZZNUMBER_T                              " 学生番号テーブル

    INTO TABLE TD_NAME.                          " 学生氏名内部テーブル

*----- 学生番号で升顺にソートする。

  SORT:

    TD_NAME

    BY ZZNUMBER ASCENDING.                       " 学生番号

*----- 取得したテスト结果の学生番号を元に生徒名を取得する。

  LOOP AT TD_TEST

    ASSIGNING <LFS_TEST>.

*----- 学生番号を元に生徒名を取得する。

    READ TABLE TD_NAME

      INTO LTH_NAME                              " 学生氏名内部テーブル

      WITH KEY

        ZZNUMBER = <LFS_TEST>-ZZSTDNO            " 选択条件:学生番号

        BINARY SEARCH.

*----- リターンコードは'0'の场合

    IF SY-SUBRC = 0.                             " 読み込みOK

      <LFS_TEST>-ZZNAME = LTH_NAME-ZZNAME.       " 氏名

*----- それ以外の场合

    ELSE.

      <LFS_TEST>-ZZNAME = TEXT-001.              " '*** 未登録 ***'をセット

    ENDIF.

*----- テーブルのクリア

    CLEAR:

      LTH_NAME.

  ENDLOOP.

ENDFORM.                                         " SELECT_DATA

*&---------------------------------------------------------------------*

*&      Form  FILEDCAT_EDT

*&---------------------------------------------------------------------*

*       ログー编集

*----------------------------------------------------------------------*

FORM FILEDCAT_EDT .

  DATA:

    LTH_FDC LIKE LINE OF TD_FIELDCAT.            " ログー

*----- クラスログーの编集

  LTH_FDC-FIELDNAME = 'ZZCLASS'.                 " クラス

  LTH_FDC-OUTPUTLEN = 6.                         " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

*----- 氏名ログーの编集

  LTH_FDC-FIELDNAME = 'ZZNAME'.                  " 氏名

  LTH_FDC-OUTPUTLEN = 12.                        " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

*----- 国语点数ログーの编集

  LTH_FDC-FIELDNAME = 'ZZTENKOK'.                " 国语点数

  LTH_FDC-OUTPUTLEN = 7.                         " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

*----- 算数点数ログーの编集

  LTH_FDC-FIELDNAME = 'ZZTENSAN'.                " 算数点数

  LTH_FDC-OUTPUTLEN = 7.                         " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

*----- 理科点数ログーの编集

  LTH_FDC-FIELDNAME = 'ZZTENRIK'.                " 理科点数

  LTH_FDC-OUTPUTLEN = 7.                         " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

*----- 社会点数ログーの编集

  LTH_FDC-FIELDNAME = 'ZZTENSHA'.                " 社会点数

  LTH_FDC-OUTPUTLEN = 7.                         " 出力长

  APPEND LTH_FDC  TO TD_FIELDCAT.                " ログー

ENDFORM.                                         " FILEDCAT_EDT

*&---------------------------------------------------------------------*

*&      Form  ALV_OUTPUT

*&---------------------------------------------------------------------*

*       ALV出力処理

*----------------------------------------------------------------------*

FORM ALV_OUTPUT .

*----- ALV出力用泛用モジュール

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      I_CALLBACK_PROGRAM = SY-REPID              " プラグラムーID

      IT_FIELDCAT        = TD_FIELDCAT           " ログー

      I_GRID_TITLE       = TEXT-002              " ヘッダ

      I_STRUCTURE_NAME   = 'ZZALV_Y'             " 构造ID

    TABLES

      T_OUTTAB           = TD_TEST               " テスト结果テーブル

    EXCEPTIONS

      PROGRAM_ERROR      = 1

      OTHERS             = 2.

*----- リターンコード

  IF SY-SUBRC <> 0.

*----- 処理なし

  ENDIF.

ENDFORM.                                         " ALV_OUTPUT 

参考技术A 作为一个初学者我想说。这个不难啊。
先用parameters 选值
取值用 select from . .. inner join 两个表,放在你定义的内表
然后 reuse_alv_grid_display.
用 ssrcfields 定义一个按键就完了。
参考技术B ALV几句话说不完。你进SE38,然后搜索所有以“BCALV_GRID_”开头的程序。这些都是讲ALV Grid的系统示例,你要的功能都能找到对应的做法。 参考技术C 分真高,奔分来的。。。
先说说你会啥,然后可以教你。。。

以上是关于SAP ABAP ALV报表练习 如图 将上两张图中的数据用ALV表示 要求如图 大神快来吧!!!写详细点有加分!的主要内容,如果未能解决你的问题,请参考以下文章

sap abap报表显示的问题

sap alv显示问题

abap语言的alv程序中,如何控制单元格的零显示空

sap alv字段当满足条件变灰

在SAP abap中。从第一个ALV显示根据筛选条件搜索出第二个ALV的显示数据(内表不一样)点击返回一直转圈

sap中每次看alv报表 都要手动的最优化列宽,请问在哪里可以设置下,让ALV报表自动最优化列宽吗??