ALV如何取数实例

1 进入ABAP数据字典,查看表sflight的表结构

2 建立内表it_sflight和工作区wa_sflight,数据类型与sflight相同

3 建立选择屏幕,其中carrid字段,要求用户选择一项,connid和fldate字段,用户可以选定一定范围的数据

4 设置carrid字段默认值为AA

5 用户在选择屏幕录入数据后,要求carrid必填,connid和fldate字段至少要填一个

6 将sflight的所有字段用ALV进行输出,要求自动调整列宽

7用SE37 分析功能模块REUSE_ALV_GRID_DISPLAY_LVC

8分析参数IT_FIELDCAT_LVC 的类型和结构

通过给该参数赋值,实现在ALV中只显示

carrid connid fldate price currencyplanetype seatsmax seatsocc

这几个字段

9 重新定义it_sflight 和wa_sflight  增加 occpercent字段,计算百分比

在alv中显示occpercent字段



实例代码:

TYPES:BEGIN OF TY_SFLIGHT,
      CARRID TYPE SFLIGHT-CARRID,
      CONNID TYPE SFLIGHT-CONNID,
   FLDATE TYPE SFLIGHT-FLDATE,
  PRICE TYPE SFLIGHT-PRICE,
  CURRENCY TYPE SFLIGHT-CURRENCY,
  PLANETYPE TYPE SFLIGHT-PLANETYPE,
  SEATSMAX TYPE SFLIGHT-SEATSMAX,
  SEATSOCC TYPE SFLIGHT-SEATSOCC,
  OCCPERCENT TYPE P DECIMALS 2,
  END OF TY_SFLIGHT.
DATA:it_sflight TYPE TABLE OF TY_sflight.
DATA wa_sflight TYPE TY_sflight.

DATA connid TYPE sflight-connid.
DATA fldate TYPE sflight-fldate.

DATA:IT_FIELDCAT_LVC TYPE LVC_T_FCAT,
      WA_FIELDCAT_LVC TYPE LINE OF LVC_T_FCAT.

PARAMETERS p_car TYPE sflight-carrid.
SELECT-OPTIONS: p_con FOR connid,
                p_fld FOR fldate.

LOAD-OF-PROGRAM.
  p_car = 'AA'.

AT SELECTION-SCREEN  ON P_CAR.
  IF p_car is INITIAL .
    MESSAGE e000(ZBC3_WJ_MSG).
  ENDIF.

AT SELECTION-SCREEN.
  IF p_con is INITIAL AND p_fld is INITIAL.
    MESSAGE e001(ZBC3_WJ_MSG).
  ENDIF.



  SELECT *
    FROM sflight
    INTO CORRESPONDING FIELDS OF TABLE it_sflight


    WHERE carrid = p_car
    AND   connid IN p_con
    AND   fldate IN p_fld.


  LOOP AT it_sflight INTO wa_sflight.
    WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.
    MODIFY it_sflight from wa_sflight.

  ENDLOOP.





  DATA is_layout_lvc TYPE lvc_s_layo.
  Is_layout_lvc-cwidth_opt = 'X'.
  WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.


  PERFORM SETDATA.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

   EXPORTING

*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                =
*   I_BUFFER_ACTIVE                   =
*   I_CALLBACK_PROGRAM                = ' '
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  = 'sflight'
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
     IS_LAYOUT_LVC                     = Is_layout_lvc
     IT_FIELDCAT_LVC                   = IT_FIELDCAT_LVC
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS_LVC             =
*   IT_SORT_LVC                       =
*   IT_FILTER_LVC                     =
*   IT_HYPERLINK                      =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT_LVC                      =
*   IS_REPREP_ID_LVC                  =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
*   IT_ALV_GRAPHICS                   =
*   IT_EXCEPT_QINFO_LVC               =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      T_OUTTAB                          = it_sflight
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
            .

  IF SY-SUBRC <> 0.

* Implement suitable error handling here
  ENDIF.


FORM SETDATA.

  CLEAR WA_FIELDCAT_LVC.
  WA_SFLIGHT-OCCPERCENT = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX.
  WA_FIELDCAT_LVC-COL_POS = 1.
  WA_FIELDCAT_LVC-FIELDNAME = 'CARRID'.
  WA_FIELDCAT_LVC-REPTEXT = 'CARRID'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 2.
  WA_FIELDCAT_LVC-FIELDNAME = 'ONNID'.
  WA_FIELDCAT_LVC-REPTEXT = 'CONNID'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 3.
  WA_FIELDCAT_LVC-FIELDNAME = 'FLDATE'.
  WA_FIELDCAT_LVC-REPTEXT = 'FLDATE'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 4.
  WA_FIELDCAT_LVC-FIELDNAME = 'PRICE'.
  WA_FIELDCAT_LVC-REPTEXT = 'PRICE'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 5.
  WA_FIELDCAT_LVC-FIELDNAME = 'CURRENCY'.
  WA_FIELDCAT_LVC-REPTEXT = 'CURRENCY'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 6.
  WA_FIELDCAT_LVC-FIELDNAME = 'PLANETYPE'.
  WA_FIELDCAT_LVC-REPTEXT = 'PLANETYPE'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 7.
  WA_FIELDCAT_LVC-FIELDNAME = 'SEATSMAX'.
  WA_FIELDCAT_LVC-REPTEXT = 'SEATSMAX'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 7.
  WA_FIELDCAT_LVC-FIELDNAME = 'SEATSOCC'.
  WA_FIELDCAT_LVC-REPTEXT = 'SEATSOCC'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.

  WA_FIELDCAT_LVC-COL_POS = 8.
  WA_FIELDCAT_LVC-FIELDNAME = 'OCCPERCENT'.
  WA_FIELDCAT_LVC-REPTEXT = 'OCCPERCENT'.
  APPEND WA_FIELDCAT_LVC TO IT_FIELDCAT_LVC.




ENDFORM.



运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值