二维码

[fmalv] 一个ALV 分块用list展示的例子

Twilight发表于 2014-07-24 09:54Twilight 最后回复于 2014-07-24 09:54 [复制链接] 3765 0

这个例子用到三个function modules
1、REUSE_ALV_BLOCK_LIST_INIT
2、REUSE_ALV_BLOCK_LIST_APPEND
3、REUSE_ALV_BLOCK_LIST_DISPLAY

执行效果:
选择屏幕输入适当的物料号范围,执行如下
ALV Blocked 1.jpg
向下滚动 第二个alv block
ALV Blocked 2.jpg
第三个alv block
ALV Blocked 3.jpg

程序代码:
  1. *provide tables
  2. TABLES: MARA, MAKT, MARD.
  3. *provide type-pools
  4. TYPE-POOLS: SLIS.
  5. *provide select-options
  6. SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
  7. *provide data objects
  8. DATA: V_REPID TYPE SY-REPID,
  9.       WA_MARA_FIELD TYPE SLIS_FIELDCAT_ALV,       "it is for field catalog
  10.       WA_MAKT_FIELD TYPE SLIS_FIELDCAT_ALV,
  11.       WA_MARD_FIELD TYPE SLIS_FIELDCAT_ALV,
  12.       WA_MARA TYPE MARA,
  13.       WA_MAKT TYPE MAKT,
  14.       WA_MARD TYPE MARD,
  15.       IT_MARA_FIELD TYPE SLIS_T_FIELDCAT_ALV,
  16.       IT_MAKT_FIELD TYPE SLIS_T_FIELDCAT_ALV,
  17.       IT_MARD_FIELD TYPE SLIS_T_FIELDCAT_ALV,
  18.       IT_MARA TYPE TABLE OF MARA,
  19.       IT_MAKT TYPE TABLE OF MAKT,
  20.       IT_MARD TYPE TABLE OF MARD,
  21.       V_LAYOUT TYPE SLIS_LAYOUT_ALV,
  22.       IT_EVENTS TYPE SLIS_T_EVENT,            "it is for events
  23.       WA_EVENTS TYPE SLIS_ALV_EVENT.
  24. V_REPID = SY-REPID.
  25. *provide field catalog perform
  26. PERFORM FIELD_CAT.
  27. *call the initial function module
  28. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  29.   EXPORTING
  30.     I_CALLBACK_PROGRAM             = V_REPID
  31. *   I_CALLBACK_PF_STATUS_SET       = ' '
  32. *   I_CALLBACK_USER_COMMAND        = ' '
  33. *   IT_EXCLUDING                   =
  34.           .
  35. *provide perform for select the data
  36. PERFORM SELECT_DATA.
  37. *call mara append list
  38. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  39.   EXPORTING
  40.     IS_LAYOUT                        = V_LAYOUT
  41.     IT_FIELDCAT                      = IT_MARA_FIELD[]
  42.     I_TABNAME                        = 'MARA'
  43.     IT_EVENTS                        = IT_EVENTS[]
  44. *   IT_SORT                          =
  45. *   I_TEXT                           = ' '
  46.   TABLES
  47.     T_OUTTAB                         = IT_MARA
  48. EXCEPTIONS
  49.    PROGRAM_ERROR                    = 1
  50.    MAXIMUM_OF_APPENDS_REACHED       = 2
  51.    OTHERS                           = 3.
  52. *call makt append list
  53. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  54.   EXPORTING
  55.     IS_LAYOUT                        = V_LAYOUT
  56.     IT_FIELDCAT                      = IT_MAKT_FIELD
  57.     I_TABNAME                        = 'MAKT'
  58.     IT_EVENTS                        = IT_EVENTS
  59. *   IT_SORT                          =
  60. *   I_TEXT                           = ' '
  61.   TABLES
  62.     T_OUTTAB                         = IT_MAKT
  63. EXCEPTIONS
  64.    PROGRAM_ERROR                    = 1
  65.    MAXIMUM_OF_APPENDS_REACHED       = 2
  66.    OTHERS                           = 3.
  67. *call mard append list
  68. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  69.   EXPORTING
  70.     IS_LAYOUT                        = V_LAYOUT
  71.     IT_FIELDCAT                      = IT_MARD_FIELD
  72.     I_TABNAME                        = 'MARD'
  73.     IT_EVENTS                        = IT_EVENTS
  74. *   IT_SORT                          =
  75. *   I_TEXT                           = ' '
  76.   TABLES
  77.     T_OUTTAB                         = IT_MARD
  78. EXCEPTIONS
  79.    PROGRAM_ERROR                    = 1
  80.    MAXIMUM_OF_APPENDS_REACHED       = 2
  81.    OTHERS                           = 3.
  82. *display the data
  83. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
  84. * EXPORTING
  85. *   I_INTERFACE_CHECK             = ' '
  86. *   IS_PRINT                      =
  87. *   I_SCREEN_START_COLUMN         = 0
  88. *   I_SCREEN_START_LINE           = 0
  89. *   I_SCREEN_END_COLUMN           = 0
  90. *   I_SCREEN_END_LINE             = 0
  91. * IMPORTING
  92. *   E_EXIT_CAUSED_BY_CALLER       =
  93. *   ES_EXIT_CAUSED_BY_USER        =
  94. * EXCEPTIONS
  95. *   PROGRAM_ERROR                 = 1
  96. *   OTHERS                        = 2.
  97. .
  98. *&--------------------------------------------------------------------*
  99. *&      Form  TOP_PAGE
  100. *&--------------------------------------------------------------------*
  101. *       text
  102. *---------------------------------------------------------------------*
  103. FORM TOP_PAGE.
  104.   WRITE:/ 'THIS IS BLOCKED ALV REPORT PROGRAM BASED ON 3 BLOCKS' COLOR 5.
  105. ENDFORM.                    "TOP_PAGE
  106. *&---------------------------------------------------------------------*
  107. *&      Form  FIELD_CAT
  108. *&---------------------------------------------------------------------*
  109. *       text
  110. *----------------------------------------------------------------------*
  111. *  -->  p1        text
  112. *  <--  p2        text
  113. *----------------------------------------------------------------------*
  114. FORM FIELD_CAT .
  115. WA_MARA_FIELD-COL_POS = 1.
  116. WA_MARA_FIELD-FIELDNAME = 'MATNR'.
  117. WA_MARA_FIELD-REF_TABNAME = 'MARA'.
  118. APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
  119. CLEAR WA_MARA_FIELD.
  120. WA_MARA_FIELD-COL_POS = 2.
  121. WA_MARA_FIELD-FIELDNAME = 'ERSDA'.
  122. WA_MARA_FIELD-REF_TABNAME = 'MARA'.
  123. APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
  124. CLEAR WA_MARA_FIELD.
  125. WA_MARA_FIELD-COL_POS = 3.
  126. WA_MARA_FIELD-FIELDNAME = 'ERNAM'.
  127. WA_MARA_FIELD-REF_TABNAME = 'MARA'.
  128. APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
  129. CLEAR WA_MARA_FIELD.
  130. WA_MARA_FIELD-COL_POS = 4.
  131. WA_MARA_FIELD-FIELDNAME = 'LAEDA'.
  132. WA_MARA_FIELD-REF_TABNAME = 'MARA'.
  133. APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
  134. CLEAR WA_MARA_FIELD.
  135. WA_MAKT_FIELD-COL_POS = '1'.
  136. WA_MAKT_FIELD-FIELDNAME = 'MATNR'.
  137. WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
  138. APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
  139. CLEAR WA_MAKT_FIELD.
  140. WA_MAKT_FIELD-COL_POS = 2.
  141. WA_MAKT_FIELD-FIELDNAME = 'MAKTX'.
  142. WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
  143. APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
  144. CLEAR WA_MAKT_FIELD.
  145. WA_MAKT_FIELD-COL_POS = 3.
  146. WA_MAKT_FIELD-FIELDNAME = 'MAKTG'.
  147. WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
  148. APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
  149. CLEAR WA_MAKT_FIELD.
  150. WA_MARD_FIELD-COL_POS = 1.
  151. WA_MARD_FIELD-FIELDNAME = 'MATNR'.
  152. WA_MARD_FIELD-REF_TABNAME = 'MARD'.
  153. APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
  154. CLEAR WA_MARD_FIELD.
  155. WA_MARD_FIELD-COL_POS = 2.
  156. WA_MARD_FIELD-FIELDNAME = 'WERKS'.
  157. WA_MARD_FIELD-REF_TABNAME = 'MARD'.
  158. APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
  159. CLEAR WA_MARD_FIELD.
  160. WA_MARD_FIELD-COL_POS = 3.
  161. WA_MARD_FIELD-FIELDNAME = 'LGORT'.
  162. WA_MARD_FIELD-REF_TABNAME = 'MARD'.
  163. APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
  164. CLEAR WA_MARD_FIELD.
  165. WA_EVENTS-FORM = 'TOP_PAGE'.
  166. WA_EVENTS-NAME = 'TOP_OF_PAGE'.
  167. APPEND WA_EVENTS TO IT_EVENTS.
  168. ENDFORM.                    " FIELD_CAT
  169. *&---------------------------------------------------------------------*
  170. *&      Form  SELECT_DATA
  171. *&---------------------------------------------------------------------*
  172. *       text
  173. *----------------------------------------------------------------------*
  174. *  -->  p1        text
  175. *  <--  p2        text
  176. *----------------------------------------------------------------------*
  177. FORM SELECT_DATA .
  178. SELECT *
  179. FROM MARA
  180. INTO TABLE IT_MARA
  181. WHERE MATNR IN S_MATNR.
  182. SELECT *
  183. FROM MAKT
  184. INTO TABLE IT_MAKT
  185. WHERE MATNR IN S_MATNR.
  186. SELECT *
  187. FROM MARD
  188. INTO TABLE IT_MARD
  189. WHERE MATNR IN S_MATNR.
  190. ENDFORM.                    " SELECT_DATA
复制代码
回复

使用道具 举报

快速回帖

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

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