二维码

[fmalv] 简单的alv显示,FIELDCAT-CHECKBOX选择框

Twilight发表于 2014-03-30 15:44Twilight 最后回复于 2014-03-30 15:44 [复制链接] 10157 0

作业1 建立程序ZBC3_<YN>_HM1.
1 进入ABAP数据字典,查看表sflight的表结构
2 建立内表it_sflight和工作区wa_sflight,数据类型与sflight相同
3 建立选择屏幕,其中carrid字段,要求用户选择一项,connid和fldate字段,用户可以选定一定范围的数据
4 设置carrid字段默认值为AA
5 用户在选择屏幕录入数据后,要求carrid必填,connid和fldate字段至少要填一个
6 将sflight的所有字段用ALV进行输出,要求自动调整列宽
作业2 探索ALV
1复制程序ZBC3_<YN>_HM1到ZBC3_<YN>_HM2
2用SE37 分析功能模块 REUSE_ALV_GRID_DISPLAY_LVC
3分析参数IT_FIELDCAT_LVC 的类型和结构
通过给该参数赋值,实现在ALV中只显示
carrid connid fldate price currency planetype seatsmax seatsocc
这几个字段
4 重新定义it_sflight 和 wa_sflight  增加 occpercent字段,计算百分比
在alv中显示occpercent字段
5 增加 avliable字段,当occpercent < 80%的时候,该值为’X’,否则为空
6 在alv中用checkbox显示avliable字段

以上程序要求,采用include程序结构编写
              适当的采用自过程定义
              使用恰当的程序事件

执行执行效果:
简单的ALV.jpg

主程序代码:
  1. INCLUDE ZHOMEWORK_3_2_DEF.
  2. INCLUDE ZHOMEWORK_3_2_MAIN.
  3. INCLUDE ZHOMEWORK_3_2_SUB.
复制代码
INCLUDE ZHOMEWORK_3_2_DEF.
  1. *&---------------------------------------------------------------------*
  2. *&  Include           ZHOMEWORK_3_2_DEF
  3. *&---------------------------------------------------------------------*
  4. TYPES:BEGIN OF TY_SFLIGHT,
  5.          carrid    TYPE SFLIGHT-carrid,
  6.          connid    TYPE SFLIGHT-connid,
  7.          fldate    TYPE SFLIGHT-fldate,
  8.          price     TYPE SFLIGHT-price ,
  9.          currency  TYPE SFLIGHT-currency,
  10.          planetype TYPE SFLIGHT-planetype,
  11.          seatsmax  TYPE SFLIGHT-seatsmax ,
  12.          seatsocc  TYPE SFLIGHT-seatsocc ,
  13.          occpercent TYPE P DECIMALS 2,
  14.          avliable   TYPE C LENGTH 1 ,
  15.        END OF TY_SFLIGHT.


  16. DATA: WA_SFLIGHT TYPE TY_SFLIGHT.
  17. DATA:IT_SFLIGHT TYPE STANDARD TABLE OF TY_SFLIGHT.

  18. PARAMETERS:P_CARR TYPE SFLIGHT-CARRID OBLIGATORY.
  19. SELECT-OPTIONS:S_CONN FOR WA_SFLIGHT-CONNID.
  20. SELECT-OPTIONS:S_FLD FOR WA_SFLIGHT-FLDATE.
  21. PARAMETERS: P_CHECK AS CHECKBOX.
复制代码
INCLUDE ZHOMEWORK_3_2_MAIN.
  1. *&---------------------------------------------------------------------*
  2. *&  Include           ZHOMEWORK_3_2_MAIN
  3. *&---------------------------------------------------------------------*

  4. LOAD-OF-PROGRAM.
  5. P_CARR = 'AA'.

  6. AT SELECTION-SCREEN.
  7. IF S_CONN IS INITIAL AND S_FLD IS INITIAL.
  8. MESSAGE E005(ZVINO).
  9. *   P_ERDAT IS NOT INITIAL
  10. ENDIF.

  11. START-OF-SELECTION.

  12. PERFORM GET_DATA.
  13. PERFORM SHOW_DATA.
复制代码
INCLUDE ZHOMEWORK_3_2_SUB.
  1. *&---------------------------------------------------------------------*
  2. *&  Include           ZHOMEWORK_3_2_SUB
  3. *&---------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *&      Form  GET_DATA
  6. *&---------------------------------------------------------------------*
  7. *       text
  8. *----------------------------------------------------------------------*
  9. *  -->  p1        text
  10. *  <--  p2        text
  11. *----------------------------------------------------------------------*
  12. FORM GET_DATA .
  13. SELECT  carrid
  14.         connid
  15.         fldate
  16.         price
  17.         currency
  18.         planetype
  19.         seatsmax
  20.         seatsocc
  21.    INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT
  22.    FROM SFLIGHT
  23.    WHERE CARRID = P_CARR AND CONNID IN S_CONN AND FLDATE IN S_FLD.

  24. LOOP AT IT_SFLIGHT INTO WA_SFLIGHT.
  25.    WA_SFLIGHT-occpercent = WA_SFLIGHT-seatsocc / WA_SFLIGHT-seatsmax.
  26.    IF WA_SFLIGHT-occpercent < '0.8'.
  27.        WA_SFLIGHT-avliable = 'X'.
  28.        MODIFY IT_SFLIGHT FROM WA_SFLIGHT.
  29.      ELSE.
  30.        MODIFY IT_SFLIGHT FROM WA_SFLIGHT.
  31.    ENDIF.
  32. ENDLOOP.
  33. ENDFORM.                    " GET_DATA
  34. *&---------------------------------------------------------------------*
  35. *&      Form  SHOW_DATA
  36. *&---------------------------------------------------------------------*
  37. *       text
  38. *----------------------------------------------------------------------*
  39. *  -->  p1        text
  40. *  <--  p2        text
  41. *----------------------------------------------------------------------*
  42. FORM SHOW_DATA .
  43. DATA:L_LAYOUT TYPE LVC_S_LAYO.
  44. L_LAYOUT-CWIDTH_OPT = 'X'.
  45. DATA:LT_FIELDCAT TYPE LVC_T_FCAT.
  46. DATA:LW_FIELDCAT LIKE LINE OF LT_FIELDCAT.
  47. LW_FIELDCAT-KEY = 'X'.
  48. LW_FIELDCAT-COL_POS = '1'.
  49. LW_FIELDCAT-FIELDNAME = 'CARRID'.
  50. LW_FIELDCAT-SCRTEXT_L = 'CARRID11'.
  51. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  52. LW_FIELDCAT-KEY = 'X'.
  53. LW_FIELDCAT-COL_POS = '2'.
  54. LW_FIELDCAT-FIELDNAME = 'CONNID'.
  55. LW_FIELDCAT-SCRTEXT_L = 'CONNID'.
  56. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  57. LW_FIELDCAT-KEY = 'X'.
  58. LW_FIELDCAT-COL_POS = '3'.
  59. LW_FIELDCAT-FIELDNAME = 'FLDATE'.
  60. LW_FIELDCAT-SCRTEXT_L = 'FLDATE'.
  61. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  62. LW_FIELDCAT-KEY = ''.
  63. LW_FIELDCAT-COL_POS = '4'.
  64. LW_FIELDCAT-FIELDNAME = 'PRICE'.
  65. LW_FIELDCAT-SCRTEXT_L = 'PRICE'.
  66. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  67. LW_FIELDCAT-KEY = ''.
  68. LW_FIELDCAT-COL_POS = '5'.
  69. LW_FIELDCAT-FIELDNAME = 'CURRENCY'.
  70. LW_FIELDCAT-SCRTEXT_L = 'CURRENCY'.
  71. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  72. LW_FIELDCAT-KEY = ''.
  73. LW_FIELDCAT-COL_POS = '6'.
  74. LW_FIELDCAT-FIELDNAME = 'PLANTYPE'.
  75. LW_FIELDCAT-SCRTEXT_L = 'FLANTYPE'.
  76. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  77. LW_FIELDCAT-KEY = ''.
  78. LW_FIELDCAT-COL_POS = '7'.
  79. LW_FIELDCAT-FIELDNAME = 'SEATSMAX'.
  80. LW_FIELDCAT-SCRTEXT_L = 'SEATSMAX'.
  81. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  82. LW_FIELDCAT-KEY = ''.
  83. LW_FIELDCAT-COL_POS = '8'.
  84. LW_FIELDCAT-FIELDNAME = 'SEATSOCC'.
  85. LW_FIELDCAT-SCRTEXT_L = 'SEATSOCC'.
  86. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  87. LW_FIELDCAT-KEY = ''.
  88. LW_FIELDCAT-COL_POS = '9'.
  89. LW_FIELDCAT-FIELDNAME = 'OCCPERCENT'.
  90. LW_FIELDCAT-SCRTEXT_L = 'OCCPERCENT'.
  91. APPEND LW_FIELDCAT TO LT_FIELDCAT.

  92. IF P_CHECK = 'X'.
  93. LW_FIELDCAT-CHECKBOX = 'X'.
  94. LW_FIELDCAT-KEY = ''.
  95. LW_FIELDCAT-COL_POS = '10'.
  96. LW_FIELDCAT-FIELDNAME = 'AVLIABLE'.
  97. LW_FIELDCAT-SCRTEXT_L = 'AVLIABLE'.
  98. APPEND LW_FIELDCAT TO LT_FIELDCAT.
  99. ENDIF.

  100. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  101. EXPORTING
  102. *   I_INTERFACE_CHECK                 = ' '
  103. *   I_BYPASSING_BUFFER                =
  104. *   I_BUFFER_ACTIVE                   =
  105. *   I_CALLBACK_PROGRAM                = ' '
  106. *   I_CALLBACK_PF_STATUS_SET          = ' '
  107. *   I_CALLBACK_USER_COMMAND           = ' '
  108. *   I_CALLBACK_TOP_OF_PAGE            = ' '
  109. *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
  110. *   I_CALLBACK_HTML_END_OF_LIST       = ' '
  111. *   I_STRUCTURE_NAME                  =
  112. *   I_BACKGROUND_ID                   = ' '
  113. *   I_GRID_TITLE                      =
  114. *   I_GRID_SETTINGS                   =
  115.     IS_LAYOUT_LVC                     = L_LAYOUT
  116.     IT_FIELDCAT_LVC                   = LT_FIELDCAT
  117. *   IT_EXCLUDING                      =
  118. *   IT_SPECIAL_GROUPS_LVC             =
  119. *   IT_SORT_LVC                       =
  120. *   IT_FILTER_LVC                     =
  121. *   IT_HYPERLINK                      =
  122. *   IS_SEL_HIDE                       =
  123. *   I_DEFAULT                         = 'X'
  124. *   I_SAVE                            = ' '
  125. *   IS_VARIANT                        =
  126. *   IT_EVENTS                         =
  127. *   IT_EVENT_EXIT                     =
  128. *   IS_PRINT_LVC                      =
  129. *   IS_REPREP_ID_LVC                  =
  130. *   I_SCREEN_START_COLUMN             = 0
  131. *   I_SCREEN_START_LINE               = 0
  132. *   I_SCREEN_END_COLUMN               = 0
  133. *   I_SCREEN_END_LINE                 = 0
  134. *   I_HTML_HEIGHT_TOP                 =
  135. *   I_HTML_HEIGHT_END                 =
  136. *   IT_ALV_GRAPHICS                   =
  137. *   IT_EXCEPT_QINFO_LVC               =
  138. *   IR_SALV_FULLSCREEN_ADAPTER        =
  139. * IMPORTING
  140. *   E_EXIT_CAUSED_BY_CALLER           =
  141. *   ES_EXIT_CAUSED_BY_USER            =
  142.   TABLES
  143.     T_OUTTAB                          = IT_SFLIGHT
  144. * EXCEPTIONS
  145. *   PROGRAM_ERROR                     = 1
  146. *   OTHERS                            = 2
  147. .

  148. ENDFORM.                    " SHOW_DATA
复制代码

回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表