库存查询ALM源代码(可参考)
*&---------------------------------------------------------------------*
*& Report ZIM_O02_CHAXUN
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZKIM_O02_CHAXUN MESSAGE-ID zbw.
TABLES: /BIC/AZIM_O0200.
TYPES: BEGIN OF TYP_DISPLAY,
MAT_DOC TYPE /BIC/AZIM_O0200-MAT_DOC, ""物料凭证
VAL_CLASS TYPE /BIC/AZIM_O0200-VAL_CLASS, ""估价类
DOC_DATE TYPE /BIC/AZIM_O0200-DOC_DATE, ""凭证日期
MOVETYPE TYPE /BIC/AZIM_O0200-MOVETYPE, ""移动类型
OI_ERFMG TYPE /BIC/AZIM_O0200-OI_ERFMG, ""输入单位下的数量
STOR_LOC TYPE /BIC/AZIM_O0200-STOR_LOC, ""库位
PLANT TYPE /BIC/AZIM_O0200-PLANT,
MATERIAL TYPE /BIC/AZIM_O0200-MATERIAL,
QUANT_B TYPE /BIC/AZIM_O0200-QUANT_B, ""数量
DCINDIC TYPE /BIC/AZIM_O0200-DCINDIC, ""借贷标识
MATL_TYPE TYPE /BIC/AZIM_O0200-MATL_TYPE, ""移动类型
VALSPECST TYPE /BIC/AZIM_O0200-VALSPECST, ""标准寄售
END OF TYP_DISPLAY.
TYPES: BEGIN OF TYP_DISPLAY2,
OI_ERFMG TYPE /BIC/AZIM_O0200-OI_ERFMG,
STOR_LOC TYPE /BIC/AZIM_O0200-STOR_LOC,
PLANT TYPE /BIC/AZIM_O0200-PLANT,
MATERIAL TYPE /BIC/AZIM_O0200-MATERIAL,
QUANT_B TYPE /BIC/AZIM_O0200-QUANT_B,
DCINDIC TYPE /BIC/AZIM_O0200-DCINDIC,
END OF TYP_DISPLAY2.
***TYPES 定义类型 DATA 实例化 DATA 定义的是工作区
DATA: IT_DISPLAY TYPE TABLE OF TYP_DISPLAY WITH HEADER LINE,
WA_DISPLAY TYPE TYP_DISPLAY.
DATA: IT_DISPLAY2 TYPE TABLE OF TYP_DISPLAY2 WITH HEADER LINE,
WA_DISPLAY2 TYPE TYP_DISPLAY2.
DATA: IT_DISPLAY3 TYPE TABLE OF TYP_DISPLAY2 WITH HEADER LINE.
DATA:
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT2 TYPE SLIS_FIELDCAT_ALV.
***选择是EPG&卡奥斯的数据 还是GVS数据
PARAMETERS:
H_GVS RADIOBUTTON GROUP A2,
H_KAS RADIOBUTTON GROUP A2.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
S_PLANT FOR /BIC/AZIM_O0200-PLANT NO INTERVALS, ""工厂
S_STRC FOR /BIC/AZIM_O0200-STOR_LOC NO INTERVALS, ""库存地点
S_MAT FOR /BIC/AZIM_O0200-MATERIAL NO INTERVALS. ""物料号
SELECTION-SCREEN END OF BLOCK B1.
PARAMETERS:
R_MX RADIOBUTTON GROUP A1, ""展示明细数据
R_HZ RADIOBUTTON GROUP A1. ""展示汇总数据
* R_EKMX RADIOBUTTON GROUP A1, ""同时展示EPG和卡奥斯的库存明细数据
* R_EKHZ RADIOBUTTON GROUP A1. ""展示EPG与卡奥斯的汇总数据
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION.
IF H_GVS IS NOT INITIAL. ""选择查询GVS库存
IF R_MX IS NOT INITIAL.
* ****获取ZIM_O02 中的库存明细*****
PERFORM GET_ZIM_O02.
* ***获得字段位置
PERFORM GET_FIELDCAT.
* ****输出物料库存明细*******
PERFORM DISPLAY_DATA.
ELSEIF R_HZ IS NOT INITIAL.
PERFORM GET2_ZIM_O02.
PERFORM GET2_FIELDCAT.
PERFORM DISPLAY2_DATA.
ENDIF.
ELSEIF H_KAS IS NOT INITIAL. ""选择查询卡奥斯EPG库存
IF R_MX IS NOT INITIAL.
* ****获取ZKIM_O02 中的库存明细*****
PERFORM GET_EKIM_O02.
** ***获得字段位置
PERFORM GET_FIELDCAT.
** ****输出物料库存明细*******
PERFORM DISPLAY_DATA.
ELSEIF R_HZ IS NOT INITIAL.
PERFORM GET2_EKIM_O02.
PERFORM GET2_FIELDCAT.
PERFORM DISPLAY2_DATA.
ENDIF.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_ZIM_O02
*&---------------------------------------------------------------------*
* *****获取ZIM_O02 中的库存明细*****
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_ZIM_O02 .
IF S_PLANT IS INITIAL.
message e003.
ENDIF.
IF S_PLANT IS NOT INITIAL.
REFRESH IT_DISPLAY.
SELECT MAT_DOC
VAL_CLASS
DOC_DATE
MOVETYPE
OI_ERFMG
STOR_LOC
PLANT
MATERIAL
QUANT_B
DCINDIC
MATL_TYPE
VALSPECST
FROM /BIC/AZIM_O0200 INTO TABLE it_display
WHERE PLANT IN S_PLANT AND
MATERIAL IN S_MAT AND
STOR_LOC IN S_STRC.
IF SY-SUBRC NE 0.
MESSAGE E005.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* *****输出物料库存明细*******
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZKIM_O02_CHAXUN'
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'TYP_DISPLAY'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = it_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_DISPLAY
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM GET_FIELDCAT .
REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-fieldname = 'MAT_DOC'.
wa_fieldcat-seltext_s = '物料凭证'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-fieldname = 'DOC_DATE'.
wa_fieldcat-seltext_s = '凭证日期'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fieldname = 'PLANT'.
wa_fieldcat-seltext_s = '工厂'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-fieldname = 'STOR_LOC'.
wa_fieldcat-seltext_s = '库存地点'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '5'.
wa_fieldcat-fieldname = 'MATERIAL'.
wa_fieldcat-seltext_s = ' 物料'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '6'.
wa_fieldcat-fieldname = 'MATL_TYPE'.
wa_fieldcat-seltext_s = '物料类型'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '7'.
wa_fieldcat-fieldname = 'VAL_CLASS'.
wa_fieldcat-seltext_s = '估价类'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '8'.
wa_fieldcat-fieldname = 'MOVETYPE'.
wa_fieldcat-seltext_s = '移动类型 (详细库存管理)'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '9'.
wa_fieldcat-fieldname = 'VALSPECST'.
wa_fieldcat-seltext_s = '标准/寄售'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '10'.
wa_fieldcat-fieldname = 'DCINDIC'.
wa_fieldcat-seltext_s = '借/贷标志'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '11'.
wa_fieldcat-fieldname = 'OI_ERFMG '.
wa_fieldcat-seltext_s = '输入单位下的数量'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '12'.
wa_fieldcat-fieldname = 'QUANT_B'.
wa_fieldcat-seltext_s = '以基本计量单位的数量'.
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET2_ZIM_O02
*&---------------------------------------------------------------------*
* 或者ZIM_o02汇总的数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET2_ZIM_O02 .
IF S_PLANT IS INITIAL.
message e003.
ENDIF.
IF S_PLANT IS NOT INITIAL.
REFRESH IT_DISPLAY2.
REFRESH IT_DISPLAY3.
SELECT OI_ERFMG
STOR_LOC
PLANT
MATERIAL
QUANT_B
DCINDIC
FROM /BIC/AZIM_O0200 INTO table it_DISPLAY2
WHERE PLANT IN S_PLANT AND
MATERIAL IN S_MAT AND
STOR_LOC IN S_STRC.
IF SY-SUBRC NE 0.
MESSAGE E005.
ENDIF.
ENDIF.
LOOP AT IT_DISPLAY2 INTO WA_display2.
COLLECT WA_display2 INTO IT_DISPLAY3.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET2_FIELDCAT
*&---------------------------------------------------------------------*
* 获取汇总后的字段
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET2_FIELDCAT .
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '1'.
wa_fieldcat2-fieldname = 'PLANT'.
wa_fieldcat2-seltext_s = '工厂'.
APPEND wa_fieldcat2 TO it_fieldcat2.
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '2'.
wa_fieldcat2-fieldname = 'STOR_LOC'.
wa_fieldcat2-seltext_s = '库存地点'.
APPEND wa_fieldcat2 TO it_fieldcat2.
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '3'.
wa_fieldcat2-fieldname = 'MATERIAL'.
wa_fieldcat2-seltext_s = ' 物料'.
APPEND wa_fieldcat2 TO it_fieldcat2.
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '4'.
wa_fieldcat2-fieldname = 'DCINDIC'.
wa_fieldcat2-seltext_s = '借/贷标志'.
APPEND wa_fieldcat2 TO it_fieldcat2.
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '5'.
wa_fieldcat2-fieldname = 'OI_ERFMG '.
wa_fieldcat2-seltext_s = '输入单位下的数量'.
APPEND wa_fieldcat2 TO it_fieldcat2.
CLEAR wa_fieldcat2.
wa_fieldcat2-col_pos = '6'.
wa_fieldcat2-fieldname = 'QUANT_B'.
wa_fieldcat2-seltext_s = '以基本计量单位的数量'.
APPEND wa_fieldcat2 TO it_fieldcat2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY2_DATA
*&---------------------------------------------------------------------*
* 展示汇总数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY2_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZKIM_O02_CHAXUN'
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'TYP_DISPLAY2'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = it_fieldcat2
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_DISPLAY3
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_EKIM_O02
*&---------------------------------------------------------------------*
* 整合获取卡奥斯EPG的库存明细
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_EKIM_O02 .
IF S_PLANT IS INITIAL.
message e003.
ENDIF.
IF S_PLANT IS NOT INITIAL.
REFRESH IT_DISPLAY.
"""获取EPG的库存明细
SELECT MAT_DOC
VAL_CLASS
DOC_DATE
MOVETYPE
OI_ERFMG
STOR_LOC
PLANT
/BIC/ZEPG_MAT
QUANT_B
DCINDIC
MATL_TYPE
VALSPECST
FROM /BIC/AEIM_O0200 INTO TABLE it_display
WHERE PLANT IN S_PLANT AND
/BIC/ZEPG_MAT IN S_MAT AND
STOR_LOC IN S_STRC.
""""获取卡奥斯的库存明细
SELECT MAT_DOC
VAL_CLASS
DOC_DATE
MOVETYPE
OI_ERFMG
STOR_LOC
PLANT
MATERIAL
QUANT_B
DCINDIC
MATL_TYPE
VALSPECST
FROM /BIC/AZKIM_O0200 APPENDING TABLE it_display
WHERE PLANT IN S_PLANT AND
MATERIAL IN S_MAT AND
STOR_LOC IN S_STRC.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET2_EKIM_O02
*&---------------------------------------------------------------------*
* 整合获取EPG 卡奥斯库存数据(汇总)
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET2_EKIM_O02 .
IF S_PLANT IS INITIAL.
message e003.
ENDIF.
IF
S_PLANT IS NOT INITIAL.
REFRESH IT_DISPLAY2.
REFRESH IT_DISPLAY3.
"""获取EPG库存(汇总)
SELECT OI_ERFMG
STOR_LOC
PLANT
/BIC/ZEPG_MAT
QUANT_B
DCINDIC
FROM /BIC/AEIM_O0200 INTO table it_DISPLAY2
WHERE PLANT IN S_PLANT AND
/BIC/ZEPG_MAT IN S_MAT AND
STOR_LOC IN S_STRC.
"""获取卡奥斯库存汇总
SELECT OI_ERFMG
STOR_LOC
PLANT
MATERIAL
QUANT_B
DCINDIC
FROM /BIC/AZKIM_O0200 APPENDING table it_DISPLAY2
WHERE PLANT IN S_PLANT AND
MATERIAL IN S_MAT AND
STOR_LOC IN S_STRC.
.
ENDIF.
LOOP AT IT_DISPLAY2 INTO WA_display2.
COLLECT WA_display2 INTO IT_DISPLAY3.
ENDLOOP.
ENDFORM.