*&---------------------------------------------------------------------*
*& Report YTEST_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YTEST_ALV MESSAGE-ID ZMID.
TYPE-POOLS:SLIS,ICON.
TABLES:MARD.
DATA: BEGIN OF GT_MARD OCCURS 0,
WERKS LIKE MARD-WERKS,
LGORT LIKE MARD-LGORT,
MATNR LIKE MARD-MATNR,
LABST LIKE MARD-LABST,
* ICON TYPE ICON-ID,
* COLOR TYPE ICON-ID,
END OF GT_MARD.
*ALV输出参数
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_SORT TYPE SLIS_SORTINFO_ALV,
GT_EVENT TYPE SLIS_T_EVENT,
GS_EVENT TYPE SLIS_ALV_EVENT.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARD-WERKS.
SELECTION-SCREEN END OF BLOCK BLK1.
START-OF-SELECTION.
PERFORM GET_DATA.
END-OF-SELECTION.
IF GT_MARD[] IS NOT INITIAL.
PERFORM WRITE_DATA.
ELSE.
MESSAGE S000 DISPLAY LIKE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form WRITE_DARA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM WRITE_DATA.
PERFORM BUILD_FIELDCAT.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_SORT.
PERFORM BUILD_EVENT.
PERFORM BUILD_ALV.
ENDFORM. "
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
CLEAR GT_FIELDCAT[].
PERFORM ADD_FIELDCAT USING 'WERKS' '工厂' '1' '5' ''.
PERFORM ADD_FIELDCAT USING 'LGORT' '仓库' '2' '5' ''.
PERFORM ADD_FIELDCAT USING 'MATNR' '物料代码' '3' '20' ''.
PERFORM ADD_FIELDCAT USING 'LABST' '非限制库存' '4' '20' 'X'.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form ADD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0051 text
* -->P_0052 text
* -->P_0053 text
* -->P_0054 text
* -->P_0055 text
*----------------------------------------------------------------------*
FORM ADD_FIELDCAT USING P_FIELDNAME
P_SELTEXT
P_COL
P_LEN
P_SUM.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-FIELDNAME = P_FIELDNAME. "字段名
GS_FIELDCAT-SELTEXT_M = P_SELTEXT. "描述文本
GS_FIELDCAT-COL_POS = P_COL. "列
GS_FIELDCAT-OUTPUTLEN = P_LEN. "输出长度
GS_FIELDCAT-DO_SUM = P_SUM. "是否合计
APPEND GS_FIELDCAT TO GT_FIELDCAT.
ENDFORM. " ADD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
* GS_LAYOUT-EDIT = 'X'.
GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYOUT-BOX_FIELDNAME = 'BOX'.
* GS_LAYOUT-INFO_FIELDNAME = 'COLOR'. "行颜色
GS_LAYOUT-COLTAB_FIELDNAME = 'COLOR'. "单元格颜色
*详细清单属性
GS_LAYOUT-DETAIL_POPUP = 'X'. "popup对话框
GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'. "是否显示值为空的字段
GS_LAYOUT-DETAIL_TITLEBAR = 'DETAIL SCREEN'. "对话框标题
*表单属性
GS_LAYOUT-WINDOW_TITLEBAR = '窗体抬头'.
*退出时弹出确认对话框.
GS_LAYOUT-CONFIRMATION_PROMPT = 'X'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_SORT .
* 1、基本赋值
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'WERKS'.
GS_SORT-SPOS = '1'.
GS_SORT-SUBTOT = 'X'.
APPEND GS_SORT TO GT_SORT.
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'LGORT'.
GS_SORT-SPOS = '2'.
GS_SORT-SUBTOT = 'X'.
APPEND GS_SORT TO GT_SORT.
*
** 2、使用PERFORM传参数
* PERFORM ADD_SORT USING : 'WERKS' '1' 'X',
* 'LGORT' '1' 'X'.
* 3、使用宏定义增加行
* %%FIELDCAT 'WERKS' '1' 'X'.
* %%FIELDCAT 'LGORT' '1' 'X'.
ENDFORM. " BUILD_SORT
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ''
* I_BYPASSING_BUFFER = ''
* I_BUFFER_ACTIVE = ''
I_CALLBACK_PROGRAM = SY-CPROG "调用ALV函数返回的程序
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS' "设置alv程序内的按钮
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "设置按钮功能,传输FORM名称
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "表头
* I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP_OF_PAGE2' "动态表头
* I_CALLBACK_HTML_END_OF_LIST = ''
* I_STRUCTURE_NAME = ''
I_BACKGROUND_ID = ''
I_GRID_TITLE = '物料数据清单'
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
* IT_EXCLUDING = GT_EXCLUDE "隐藏ALV基本按钮
* IT_SPECIAL_GROUPS = ''
IT_SORT = GT_SORT
* IT_FILTER = ''
* IS_SEL_HIDE = ''
* I_DEFAULT = 'X'
* I_SAVE =
* IS_VARIANT =
IT_EVENTS = GT_EVENT "定义ALV事件
* IT_EVENT_EXIT =
* IS_PRINT =
TABLES
T_OUTTAB = GT_MARD
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0 .
ENDIF.
ENDFORM. " BUILD_ALV
*&---------------------------------------------------------------------*
*& Form SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM SET_STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS'.
ENDFORM. "SET_STATUS
*&---------------------------------------------------------------------*
*& Form BULID_EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_EVENT.
GS_EVENT-NAME = 'PF_STATUS_SET'.
GS_EVENT-FORM = 'SET_STATUS'.
APPEND GS_EVENT TO GT_EVENT.
ENDFORM. "BULID_EVENT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_FIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
P_FIELD TYPE SLIS_SELFIELD.
CASE P_UCOMM.
WHEN '&IC1'.
PERFORM CALL_TRANSACTION USING P_FIELD.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
* WHEN 'PRINT_SF'.
* PERFORM CALL_SF.
ENDCASE.
P_FIELD-REFRESH = 'X'.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form CALL_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELD text
*----------------------------------------------------------------------*
FORM CALL_TRANSACTION USING P_FIELD TYPE SLIS_SELFIELD.
CASE P_FIELD-FIELDNAME.
SET PARAMETER ID 'MAT' FIELD P_FIELD-VALUE.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. "CALL_TRANSACTION
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.
DATA: LT_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: LS_LISTHEADER TYPE SLIS_LISTHEADER.
LS_LISTHEADER-TYP = 'H'.
LS_LISTHEADER-INFO = '表头描述文本'.
APPEND LS_LISTHEADER TO LT_LISTHEADER.
LS_LISTHEADER-TYP = 'S'.
LS_LISTHEADER-KEY = '字段名称或描述'.
LS_LISTHEADER-INFO = '字段值'.
APPEND LS_LISTHEADER TO LT_LISTHEADER.
LS_LISTHEADER-TYP = 'A'.
LS_LISTHEADER-INFO = '结尾斜体'.
APPEND LS_LISTHEADER TO LT_LISTHEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LT_LISTHEADER
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PR_DOCUMENT text
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE2 USING PR_DOCUMENT TYPE REF TO CL_DD_DOCUMENT.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = 'HTML TOP OF PAGE'
SAP_STYLE = CL_DD_DOCUMENT=>HEADING.
CALL METHOD PR_DOCUMENT->NEW_LINE.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = 'LINK'
SAP_STYLE = CL_DD_DOCUMENT=>SUCCESS.
CALL METHOD PR_DOCUMENT->ADD_GAP
EXPORTING
WIDTH = '5'.
CALL METHOD PR_DOCUMENT->ADD_LINK
EXPORTING
NAME = '163'
URL = 'HTTP://WWW.BAIDU.COM/'
TEXT
='BAIDU'.
ENDFORM. "TOP_OF_PAGE2
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
DATA:LS_COLOR TYPE LVC_S_SCOL.
SELECT WERKS LGORT MATNR LABST
FROM MARD
INTO CORRESPONDING FIELDS OF TABLE GT_MARD
UP TO 10 ROWS.
* LOOP AT GT_MARD.
* IF GT_MARD-LABST = 0.
* GT_MARD-ICON = ICON_RED_LIGHT.
* GT_MARD-COLOR = 'C600'.
* ELSE.
* GT_MARD-ICON = ICON_GREEN_LIGHT.
* GT_MARD-COLOR = 'C300'.
*
* ENDIF.
* MODIFY GT_MARD.
* ENDLOOP.
ENDFORM. "GET_DATA
SAP ALV完整功能
最新推荐文章于 2023-08-09 14:57:45 发布