*&---------------------------------------------------------------------*
*& Report ZTEST003
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZPPRP025.
INCLUDE ZPPRP025TOP.
INCLUDE ZPPRP025A01.
INCLUDE ZPPRP025ALV.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM FRM_GETDATA.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-STYLEFNAME = 'FIELD_STYLE'.
PERFORM FIELDS_BUILD CHANGING IT_FIELDCAT[].
PERFORM ALV_SHOW. "展示alv"
END-OF-SELECTION.
*======================================================================*
* List Events
*======================================================================*
*** page header
TOP-OF-PAGE.
*** page header after first list
TOP-OF-PAGE DURING LINE-SELECTION.
*** page footer
END-OF-PAGE.
*** when double click
AT LINE-SELECTION.
*&---------------------------------------------------------------------*
*& 包含 ZTEST003TOP
*&---------------------------------------------------------------------*
TABLES: MARC,MARA,MKAL,MAKT.
DATA: BEGIN OF WTAB,
WERKS LIKE MARC-WERKS,"工厂"
MATNR LIKE MARA-MATNR,"物料"
MAKTX LIKE MAKT-MAKTX,"物料描述"
ADATU LIKE MKAL-ADATU,"生效日期"
BDATU LIKE MKAL-BDATU,"截止日期"
VERID LIKE MKAL-VERID,"生产版本"
TEXT1 LIKE MKAL-TEXT1,"生产版本的短文本"
ERSDA LIKE MARA-ERSDA,"创建日期"
STLAL LIKE MKAL-STLAL,"可选的 BOM"
STLAN LIKE MKAL-STLAN,"BOM 用途"
END OF WTAB.
DATA: ITAB LIKE TABLE OF WTAB WITH HEADER LINE.
DATA: IT_FIELDCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE,GS_LAYOUT TYPE LVC_S_LAYO.
SELECTION-SCREEN BEGIN OF BLOCK BLK_1 WITH FRAME TITLE TEXT-001.
PARAMETER:
P_WERKS LIKE MARC-WERKS OBLIGATORY MEMORY ID KUN.
SELECT-OPTIONS:
P_MATNR FOR MARA-MATNR,"物料编号"
P_ADATU FOR MKAL-ADATU,"生效日期"
P_BDATU FOR MKAL-BDATU"截止日期"
.
SELECTION-SCREEN END OF BLOCK BLK_1.
*&---------------------------------------------------------------------*
*& 包含 ZTEST003A01
*&---------------------------------------------------------------------*
FORM FRM_GETDATA.
* break-point.
SELECT
DISTINCT
MARC~WERKS"工厂"
MARA~MATNR"物料"
MAKT~MAKTX"物料描述"
MKAL~ADATU"生效日期"
MKAL~BDATU"截止日期"
MKAL~VERID"生产版本"
MKAL~TEXT1"生产版本的短文本"
MARA~ERSDA"创建日期"
MKAL~STLAL"可选的 BOM"
MKAL~STLAN"BOM 用途"
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM MARA
INNER JOIN MAKT ON MARA~MATNR = MAKT~MATNR
INNER JOIN MARC ON MARA~MATNR = MARC~MATNR
LEFT JOIN MKAL ON MARA~MATNR = MKAL~MATNR
WHERE
MARC~WERKS = P_WERKS"工厂"
AND MARA~MATNR IN P_MATNR"物料编号"
* AND MKAL~ADATU IN P_ADATU"生效日期"
* AND MKAL~BDATU IN P_BDATU"截止日期"
.
IF SY-SUBRC IS NOT INITIAL.
MESSAGE '没有数据' TYPE 'I'.
STOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含 ZTEST003ALV
*&---------------------------------------------------------------------*
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZTEST003STATUS' EXCLUDING RT_EXTAB .
ENDFORM.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LR_GRID.
CALL METHOD LR_GRID->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
READ TABLE ITAB INDEX rs_selfield-tabindex.
ENDFORM.
FORM FIELDS_BUILD CHANGING M_FIELDCAT TYPE LVC_T_FCAT.
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'WERKS' '工厂' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'MATNR' '物料' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'MAKTX' '物料描述' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'ADATU' '生效日期' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'BDATU' '截止日期' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VERID' '生产版本' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'TEXT1' '生产版本的短文本' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'ERSDA' '创建日期' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'STLAL' '可选的 BOM' '' '' '' '' '' '' '' '' .
PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'STLAN' 'BOM 用途' '' '' '' '' '' '' '' '' .
ENDFORM.
FORM FRM_FIELDCAT_INIT TABLES T_FIELDCAT TYPE LVC_T_FCAT
USING FIELDNAME TYPE C " 字段名
SCRTEXT_M TYPE C " 标题
COL_POS TYPE I " 所在列
OUTPUTLEN TYPE I " 输出长度
EMPHASIZE TYPE C " 高亮显示
KEY TYPE C " 主键
CHECKBOX TYPE C
EDIT TYPE C
FIX_COLUMN TYPE C " 固定列
NO_ZERO TYPE C.
DATA: LS_FIELDCAT TYPE LVC_S_FCAT.
LS_FIELDCAT-FIELDNAME = FIELDNAME.
LS_FIELDCAT-SCRTEXT_M = SCRTEXT_M.
LS_FIELDCAT-COL_POS = COL_POS.
LS_FIELDCAT-OUTPUTLEN = OUTPUTLEN.
LS_FIELDCAT-EMPHASIZE = EMPHASIZE.
LS_FIELDCAT-KEY = KEY.
LS_FIELDCAT-CHECKBOX = CHECKBOX.
LS_FIELDCAT-EDIT = EDIT.
LS_FIELDCAT-FIX_COLUMN = FIX_COLUMN.
LS_FIELDCAT-NO_ZERO = NO_ZERO.
APPEND LS_FIELDCAT TO T_FIELDCAT.
CLEAR LS_FIELDCAT.
ENDFORM.
FORM ALV_SHOW.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG " /SY-REPID " 程式名称
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS' "GUI状态
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' " 自定义工具栏的事件
IT_FIELDCAT_LVC = IT_FIELDCAT[] " 必须要设置的参数 , 设定输出目录
IS_LAYOUT_LVC = GS_LAYOUT " 对输出样式的设定
TABLES
T_OUTTAB = ITAB "ALV 输出的内表
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS.
ENDFORM.