*&---------------------------------------------------------------------*
*& Report Z_ALV_TEMPLATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_TEMPLATE.
*第一步,定义需要使用的表
TABLES:VBAK,VBAP.
*第二步,定义需要使用的类型池
TYPE-POOLS:SLIS.
*第三步,定义要使用的变量和内表
*alv需要使用的变量(开始).
DATA:STR_LAYOUT TYPE SLIS_LAYOUT_ALV, "定义ALV布局
STR_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "定义ALV抬头结构
TAB_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. "定义ALV抬头表
*alv需要使用的变量(结束) 固定部分,可以直接拷贝
DATA:BEGIN OF ALV_OUTPUT OCCURS 0,
SEL(1) TYPE C,
VBELN LIKE VBAK-VBELN,"销售订单编号
ERDAT LIKE VBAK-ERDAT,"销售订单创建日期
AUART LIKE VBAK-AUART,"销售订单类型
POSNR LIKE VBAP-POSNR,"订单项目行
MATNR LIKE VBAP-MATNR,"物料编号
ARKTX LIKE VBAP-ARKTX,"物料名称
KWMENG LIKE VBAP-KWMENG,"数量
VRKME LIKE VBAP-VRKME,"销售单位
END OF ALV_OUTPUT.
* 第四步,定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: VKORG LIKE VBAK-VKORG,
AUART LIKE VBAK-AUART.
SELECT-OPTIONS:VBELN FOR VBAK-VBELN.
SELECTION-SCREEN END OF BLOCK B1 .
*开始按条件查询
START-OF-SELECTION.
*获取需要显示的数据
PERFORM GET_DATA.
*设置alv抬头
PERFORM SET_ALV_HEAD.
*设置alv布局
PERFORM SET_ALV_LAYOUT.
*显示数据
PERFORM SHOW_ALV_DATA.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT
VBAK~VBELN "销售订单编号
VBAK~ERDAT "销售订单创建日期
VBAK~AUART "销售订单类型
VBAP~POSNR "订单项目行
VBAP~MATNR "物料编号
VBAP~ARKTX "物料名称
VBAP~KWMENG "数量
VBAP~VRKME "销售单位
INTO CORRESPONDING FIELDS OF TABLE ALV_OUTPUT
FROM VBAK
INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
WHERE VBAK~AUART = AUART AND VBAK~VKORG = VKORG AND VBAK~VBELN IN VBELN.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form SET_ALV_HEAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_ALV_HEAD .
CLEAR TAB_FIELDCAT.
DEFINE ADD_FIELDCAT.
STR_FIELDCAT-FIELDNAME = &1.
STR_FIELDCAT-SELTEXT_L = &2.
STR_FIELDCAT-NO_ZERO = &3.
STR_FIELDCAT-COL_POS = &4.
APPEND STR_FIELDCAT TO TAB_FIELDCAT.
END-OF-DEFINITION.
ADD_FIELDCAT 'VBELN' '销售订单号' 'X' '1'.
ADD_FIELDCAT 'ERDAT' '创建日期' '' '4'.
ADD_FIELDCAT 'AUART' '销售订单类型' '' '3'.
ADD_FIELDCAT 'POSNR' '行项目' '' '2'.
ADD_FIELDCAT 'MATNR' '物料编号' 'X' '5'.
ADD_FIELDCAT 'ARKTX' '物料名称' '' '6'.
ADD_FIELDCAT 'KWMENG' '数量' '' '7'.
ADD_FIELDCAT 'VRKME' '销售单位' '' '8'.
ENDFORM. " SET_ALV_HEAD
*&---------------------------------------------------------------------*
*& Form SHOW_ALV_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SHOW_ALV_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_GRID_TITLE = ''
IS_LAYOUT = STR_LAYOUT
IT_FIELDCAT = TAB_FIELDCAT[]
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'"自定义ALV工具栏
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND'"定义ALV工具栏自定义按钮事件
TABLES
T_OUTTAB = ALV_OUTPUT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " SHOW_ALV_DATA
*&---------------------------------------------------------------------*
*& Form SET_ALV_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_ALV_LAYOUT .
CLEAR STR_LAYOUT.
STR_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " SET_ALV_LAYOUT
ALV标准报表开发(一)
最新推荐文章于 2024-06-08 13:47:10 发布