二维码

[fmalv] 在ALV中用不同语言展示报表数据

Twilight发表于 2014-07-17 10:43Twilight 最后回复于 2014-07-17 10:43 [复制链接] 4415 0

选择屏幕
in various languages using ALV.png

程序代码:
  1. REPORT  ydamon_011 NO STANDARD PAGE HEADING.
  2. *"Table declarations.......................................................
  3. TABLES:
  4.   mara,
  5.   makt.
  6. *"Type-pools..............................................................
  7. TYPE-POOLS: slis.
  8. *" DATA declarations.......................................................
  9. *"-------------------------------------------------------------------- *
  10. * Data declaration for the internal table to hold the material *
  11. * data   table MARA.                                                    *
  12. *"--------------------------------------------------------------------  *
  13. DATA: BEGIN OF t_mara OCCURS 0,
  14. matnr LIKE mara-matnr,
  15. meins LIKE mara-meins,
  16. mtart LIKE mara-mtart,
  17. END OF t_mara.
  18. *" DATA declarations.......................................................
  19. *"-------------------------------------------------------------------- *
  20. * Data declaration for the internal table to hold the material *
  21. * Descriptions table MAKT.                                              *
  22. *"--------------------------------------------------------------------  *
  23. DATA: BEGIN OF t_makt OCCURS 0,
  24. matnr LIKE mara-matnr,
  25. maktx LIKE makt-maktx,
  26. spras LIKE makt-spras,
  27. END OF t_makt.
  28. *" DATA declarations......................................................
  29. *"--------------------------------------------------------------------*
  30. * Data declaration for the final internal table                        *
  31. *"--------------------------------------------------------------------*
  32. DATA: BEGIN OF t_final OCCURS 0,
  33. matnr LIKE mara-matnr,
  34. meins LIKE mara-meins,
  35. mtart LIKE mara-mtart,
  36. maktx LIKE makt-maktx,
  37. END OF t_final.
  38. *" DATA declarations.....................................................
  39. *"--------------------------------------------------------------------*
  40. * Data declaration for the fieldcat                                     *
  41. *"--------------------------------------------------------------------*
  42. DATA:
  43.   t_fieldcat TYPE slis_t_fieldcat_ALV,
  44.   l_fieldcat TYPE slis_fieldcat_alv,
  45.   t_layout TYPE slis_layout_alv.

  46. *"Selection screen elements............................................
  47. SELECTION-SCREEN BEGIN OF BLOCK blck WITH FRAME.
  48. SELECT-OPTIONS:s_matnr FOR mara-matnr.
  49. SELECTION-SCREEN END OF BLOCK blck.
  50. *"Selection screen elements............................................
  51. SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
  52. *"Parameters...........................................................
  53. PARAMETERS:
  54.   p_lang LIKE sy-langu.
  55. *"Parameters...........................................................
  56. PARAMETERS:
  57.   p_rd1 RADIOBUTTON GROUP rg1 DEFAULT 'X' USER-COMMAND usr1,
  58.   p_rd2 RADIOBUTTON GROUP rg1,
  59.   p_rd3 RADIOBUTTON GROUP rg1.
  60. SELECTION-SCREEN END OF BLOCK blk.
  61. *"--------------------------------------------------------------------*
  62. *   AT SELECTION-SCREEN OUTPUT                            *
  63. *"--------------------------------------------------------------------*
  64. AT SELECTION-SCREEN OUTPUT.
  65. *"IF p_rd1............................................................
  66.   IF p_rd1 = 'X'.
  67.     p_lang = 'EN'.
  68.   ENDIF.                               " IF p_rad1 = 'X'.
  69. *"IF p_rd2............................................................
  70.   IF p_rd2 = 'X'.
  71.     p_lang = 'DE'.
  72.   ENDIF.                               " IF p_rad2 = 'X'.
  73. *"IF p_rd3............................................................
  74.   IF p_rd3 = 'X'.
  75.     p_lang = 'FR'.
  76.   ENDIF.                               " IF p_rad3 = 'X'.
  77. *"-------------------------------------------------------------------- *
  78. *   START-OF-SELECTION                                                *
  79. *"-------------------------------------------------------------------- *
  80. START-OF-SELECTION.
  81. *"--------------------------------------------------------------------*
  82. * Selection from MARA                                                  *
  83. *"--------------------------------------------------------------------*
  84.   SELECT matnr
  85.   meins
  86.   mtart
  87.   FROM mara
  88.   INTO TABLE t_mara
  89.   WHERE matnr IN s_matnr.
  90. *"--------------------------------------------------------------------*
  91. * Selection From MAKT                                                 *
  92. *"--------------------------------------------------------------------*
  93.   SELECT matnr
  94.   maktx
  95.   spras
  96.   FROM makt
  97.   INTO TABLE t_makt
  98.   FOR ALL ENTRIES IN t_mara
  99.   WHERE matnr = t_mara-matnr
  100.   AND spras = p_lang.
  101. *"LOOP AT t_mara.......................................................
  102.   LOOP AT t_mara.
  103.     t_final-matnr = t_mara-matnr.
  104.     t_final-meins = t_mara-meins.
  105.     t_final-mtart = t_mara-mtart.
  106.     READ TABLE t_makt WITH KEY matnr = t_mara-matnr.
  107.     t_final-maktx = t_makt-maktx.
  108.     APPEND t_final.
  109.     CLEAR  t_final.
  110.   ENDLOOP.
  111. *&--------------------------------------------------------------------*
  112. *&      Subroutines for the data display...                           *
  113. *&--------------------------------------------------------------------*
  114.   PERFORM t_fieldcat.
  115.   PERFORM reuse_alv.
  116. *&---------------------------------------------------------------------*
  117. *&      Form  T_FIELDCAT                                               *
  118. *&---------------------------------------------------------------------*
  119. *  This Subroutine fill the fieldcatlog with the necessary        *
  120. * fields..                                                               *
  121. *----------------------------------------------------------------------  *
  122. * There are no interface parameters to be passed to this s       *
  123. * Subroutine.                                                            *
  124. *----------------------------------------------------------------------  *
  125. FORM t_fieldcat .
  126.   PERFORM fill_field USING 'MATNR' 'Material Number'.
  127.   PERFORM fill_field USING 'MEINS' 'Base Unit of Measure'.
  128.   PERFORM fill_field USING 'MTART' 'Material Type'.
  129.   PERFORM fill_field USING 'MAKTX' 'Material Description'.
  130. ENDFORM.                    "T_FIELDCAT
  131. *&---------------------------------------------------------------------*
  132. *&      Form  FILL_FIELD
  133. *&---------------------------------------------------------------------*
  134. *      This subroutine specifies the data for the fieldcatlog
  135. *----------------------------------------------------------------------*
  136. *  -->  p1        fieldname                                            *
  137. *  <--  p2        seltext                                              *
  138. *----------------------------------------------------------------------*
  139. FORM fill_field USING   p_fieldname
  140.                         p_seltext.
  141.   l_fieldcat-fieldname  = p_fieldname.
  142.   l_fieldcat-tabname    = 'T_FINAL'.
  143.   l_fieldcat-seltext_m  = p_seltext.
  144.   APPEND l_fieldcat TO t_fieldcat.
  145.   CLEAR l_fieldcat.
  146. ENDFORM.                    " FILL_FIELD
  147. *&---------------------------------------------------------------------*
  148. *&      Form  REUSE_ALV
  149. *&---------------------------------------------------------------------*
  150. * This Subroutine to call the function module                        *
  151. * REUSE_ALV_GRID_DISPLAY                                        *
  152. *---------------------------------------------------------------------- *
  153. * There are no interface parameters to be passed to this         *
  154. * Subroutine.                                                           *
  155. *----------------------------------------------------------------------*
  156. FORM reuse_alv .
  157.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  158.     EXPORTING
  159.       is_layout     = t_layout
  160.       it_fieldcat   = t_fieldcat
  161.     TABLES
  162.       t_outtab      = t_final
  163.     EXCEPTIONS
  164.       program_error = 1
  165.       OTHERS        = 2.
  166.   IF sy-subrc <> 0.
  167. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  168. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  169.   ENDIF.
  170. ENDFORM.                    " REUSE_ALV
复制代码

回复

使用道具 举报

快速回帖

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

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