以下代码哪里定义了查询功能:
*&---------------------------------------------------------------------*
*& REPORT ZPM_YZ_BPBJLONG3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmal.
TABLES:zqm_wlz_yz,makt,mara,zmal,zpm_cs_mal_st.
DATA ok_code TYPE sy-ucomm .
DATA save_ok TYPE sy-ucomm .
CLASS lcl_application DEFINITION DEFERRED .
DATA custom_container TYPE REF TO cl_gui_custom_container .
DATA gcontainer TYPE REF TO cl_gui_custom_container .
DATA tree_control TYPE REF TO cl_gui_simple_tree .
DATA grid TYPE REF TO cl_gui_alv_grid .
DATA gs_layout TYPE lvc_s_layo.
DATA gt_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat .
DATA gw_fieldcat LIKE LINE OF gt_fieldcat .
DATA node_table LIKE TABLE OF mtreesnode .
DATA node1 TYPE mtreesnode .
DATA: BEGIN OF st_vbak OCCURS 0,
matkl LIKE zqm_wlz_yz-matkl,
num1 LIKE zqm_wlz_yz-num1,
num2 LIKE zqm_wlz_yz-num2,
num3 LIKE zqm_wlz_yz-num3,
num(1) ,
END OF st_vbak.
DATA: n1 LIKE zqm_wlz_yz-num1,
n2 LIKE zqm_wlz_yz-num2,
n3 LIKE zqm_wlz_yz-num3.
DATA:t_vbak LIKE st_vbak OCCURS 0 WITH HEADER LINE.
DATA:w_vbak LIKE t_vbak OCCURS 0 WITH HEADER LINE.
DATA g_application TYPE REF TO lcl_application .
****************************************************************************************
*ALV用到的类库
TYPE-POOLS:slis.
DATA: wa_alv_filed TYPE slis_fieldcat_alv, "列描述
wa_alv_filedcat TYPE slis_t_fieldcat_alv. "列描述内表,列清单
DATA: BEGIN OF mdezx OCCURS 0.
INCLUDE STRUCTURE mdez.
DATA: END OF mdezx.
DATA: BEGIN OF mdpsx OCCURS 0.
INCLUDE STRUCTURE mdps.
DATA: END OF mdpsx.
DATA: BEGIN OF mdsux OCCURS 0.
INCLUDE STRUCTURE mdsu.
DATA: END OF mdsux.
DATA: BEGIN OF i_zqm OCCURS 0.
INCLUDE STRUCTURE zqm_wlz_yz.
DATA: END OF i_zqm.
DATA:BEGIN OF itabb OCCURS 0,
edmxcdm(30) TYPE c,
edmxcsm(20) TYPE c,
ztext(30) TYPE c,
box TYPE char01,
END OF itabb.
*
DATA: BEGIN OF t_zmal OCCURS 0,
matnr LIKE mard-matnr, "物料号
tlines LIKE zmal-tlines, "物料描述
mtart LIKE mara-mtart, "物料类型
matkl LIKE mara-matkl,
lgort LIKE mard-lgort, " 库存地点
bismt LIKE mara-bismt, "库格
meins LIKE mara-meins, "单位
eisbe LIKE marc-eisbe, "安全库存
labst LIKE mard-labst, "非限制库存
open_po LIKE mdez-mng01, "在途库存
bstmi LIKE marc-bstmi, "最小采购量
bstfe LIKE marc-bstfe, "固定采购量
bdmng LIKE resb-bdmng,
labst1 LIKE mard-labst,
werks LIKE mard-werks,
END OF t_zmal.
DATA:BEGIN OF z_mal OCCURS 0,
matnr LIKE zpm_yz_mal_st-matnr,
lgort LIKE zpm_yz_mal_st-lgort,
werks LIKE zpm_yz_mal_st-werks,
bismt LIKE zpm_yz_mal_st-bismt,
END OF z_mal.
DATA:t_zmal1 LIKE t_zmal OCCURS 0 WITH HEADER LINE.
DATA t_vbap LIKE STANDARD TABLE OF t_zmal.
DATA: v_vbap LIKE LINE OF t_vbap.
DATA: zmatnr TYPE zpm_yz_mal-matnr,
ztlines TYPE zpm_yz_mal-tlines,
zkw TYPE mard-lgort,
zkg TYPE zpm_yz_mal_st-bismt.
DATA: ztlines1 TYPE zmal-tlines.
DATA: ztlines2 TYPE zmal-tlines.
DATA: ztlines3 TYPE zmal-tlines.
DATA: zkg1 LIKE zpm_yz_mal_st-bismt.
DATA: zkg2 LIKE zpm_yz_mal_st-bismt.
DATA: zkg3 LIKE zpm_yz_mal_st-bismt.
DATA:i1(1),i2(1),i3(1).
DATA:fxk01(1).
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
**----------------------------------------------------------------------*
CLASS lcl_application DEFINITION .
PUBLIC SECTION .
METHODS handle_selection_changed
FOR EVENT selection_changed OF cl_gui_simple_tree
IMPORTING node_key .
ENDCLASS . "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION IMPLEMENTATION *------------------------------------------
*----------------------------* *
*----------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION .
METHOD handle_selection_changed .
READ TABLE node_table WITH KEY node_key = node_key INTO node1 .
PERFORM get_data_grid USING node_key node1-relatkey node1-n_image.
CALL METHOD grid->refresh_table_display.
ENDMETHOD . "HANDLE_SELECTION_CHANGED
ENDCLASS . "LCL_APPLICATION IMPLEMENTATION
* SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001 .
* PARAMETERS P_VKORG TYPE TVKOT-VKORG OBLIGATORY DEFAULT '2030'.
* PARAMETERS P_VTWEG TYPE TVTWT-VTWEG OBLIGATORY DEFAULT '11'.
* SELECTION-SCREEN END OF BLOCK A .
START-OF-SELECTION .
PERFORM get_data .
CREATE OBJECT g_application.
CALL SCREEN 0100 .
*----------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT
*----------------------------------------------------------------------* * *------------
*----------------------------------------------------------*
MODULE status_0100 OUTPUT .
SET PF-STATUS '0100'.
IF tree_control IS INITIAL.
PERFORM create_tree .
ENDIF.
ENDMODULE . "STATUS_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE USER_COMMAND_0100 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT .
save_ok = ok_code .
CLEAR ok_code .
CASE save_ok.
WHEN 'BACK'.
SET SCREEN 0.
* CLEAR ITABB.
* FREE ITABB.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE . "USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------**& FORM
*CREATE_TREE
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM create_tree .
DATA events TYPE cntl_simple_events .
DATA event1 TYPE cntl_simple_event .
DATA num(1).
DATA num1 LIKE zqm_wlz_yz-num1 .
DATA num2 LIKE zqm_wlz_yz-num2 .
DATA num3 LIKE zqm_wlz_yz-num3 .
DATA matkl LIKE zqm_wlz_yz-matkl .
DATA l_txt LIKE zqm_wlz_yz-txt1.
DATA l_txt1 LIKE zqm_wlz_yz-txt1.
DATA l_txt2 LIKE zqm_wlz_yz-txt2 .
DATA l_txt3 LIKE zqm_wlz_yz-txt3 .
DATA str1(255) .
CREATE OBJECT custom_container
EXPORTING
container_name = 'TREE'.
CREATE OBJECT tree_control
EXPORTING
parent = custom_container
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single.
CREATE OBJECT gcontainer
EXPORTING
container_name = 'GCONTAINER'.
CREATE OBJECT grid
EXPORTING
i_parent = gcontainer.
PERFORM frm_write_data.
gs_layout-grid_title = '物料显示' .
* GS_LAYOUT-CWIDTH_OPT = 'X' .
gs_layout-zebra = 'X' .
* CONCATENATE P_VKORG P_VTWEG INTO NODE1-NODE_KEY .
* NODE1-RELATKEY = P_VKORG .
PERFORM get_data_grid USING node1-node_key node1-relatkey node1-n_image .
*
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_fieldcatalog = gt_fieldcat
it_outtab = t_vbap.
LOOP AT t_vbak INTO w_vbak.
CLEAR l_txt .
CLEAR l_txt1 .
CLEAR l_txt2 .
CLEAR l_txt3 .
l_txt = '物料分类'.
*-----ECCUpgradeS4--------AB_ZACK--------20221028--------START
* SELECT SINGLE
* txt1
* INTO l_txt1
* FROM zqm_wlz_yz
* WHERE num1 = w_vbak-num1 .
*
* SELECT SINGLE
* txt2
* INTO l_txt2
* FROM zqm_wlz_yz
* WHERE num1 = w_vbak-num1 AND num2 = w_vbak-num2.
* SELECT SINGLE
* txt3
* INTO l_txt3
* FROM zqm_wlz_yz
* WHERE num1 = w_vbak-num1 AND num2 = w_vbak-num2 AND num3 = w_vbak-num3.
SELECT
txt1
INTO l_txt1
FROM zqm_wlz_yz UP TO 1 ROWS
WHERE num1 = w_vbak-num1 ORDER BY PRIMARY KEY.ENDSELECT.
SELECT
txt2
INTO l_txt2
FROM zqm_wlz_yz UP TO 1 ROWS
WHERE num1 = w_vbak-num1 AND num2 = w_vbak-num2 ORDER BY PRIMARY KEY. ENDSELECT.
SELECT
txt3
INTO l_txt3
FROM zqm_wlz_yz UP TO 1 ROWS
WHERE num1 = w_vbak-num1 AND num2 = w_vbak-num2 AND num3 = w_vbak-num3
ORDER BY PRIMARY KEY. ENDSELECT.
*-----ECCUpgradeS4--------ABA_ZACK--------20221028--------END
"在创建根节点的同时需要创建下级以及次级子节点
IF num NE w_vbak-num .
CLEAR node1 .
node1-node_key = w_vbak-num .
"FIRST LAYER
CLEAR node1-relatkey .
CLEAR node1-relatship .
"SET THE ICON AS FOLDER
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
"CLEAR THE ICON OF THE NODE
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
* NODE1-TEXT = L_TXT1 .
node1-text = l_txt .
APPEND node1 TO node_table .
**************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 INTO node1-node_key .
node1-relatkey = w_vbak-num .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
"DISPLAY THE NODE VTWEG
* NODE1-TEXT = L_TXT2 .
CONCATENATE w_vbak-num1 l_txt1 INTO node1-text .
APPEND node1 TO node_table .
**************************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO node1-node_key .
CONCATENATE w_vbak-num w_vbak-num1 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
"DISPLAY THE NODE VTWEG
* NODE1-TEXT = L_TXT2 .
CONCATENATE w_vbak-num2 l_txt2 INTO node1-text .
APPEND node1 TO node_table .
************************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 w_vbak-num3 INTO node1-node_key.
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
node1-n_image = '@5B@' .
node1-exp_image = '@5B@' .
node1-expander = 'X'.
* NODE1-TEXT = W_VBAK-NUM3 .
CONCATENATE w_vbak-num3 l_txt3 INTO node1-text .
APPEND node1 TO node_table .
ENDIF.
"在创建次级节点的同时需要创建其字节点
IF ( num = w_vbak-num ) AND ( num1 <> w_vbak-num1 ).
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 INTO node1-node_key .
node1-relatkey = w_vbak-num .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
"DISPLAY THE NODE VTWEG
* NODE1-TEXT = L_TXT2 .
CONCATENATE w_vbak-num1 l_txt1 INTO node1-text .
APPEND node1 TO node_table .
**************************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO node1-node_key .
CONCATENATE w_vbak-num w_vbak-num1 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
"DISPLAY THE NODE VTWEG
* NODE1-TEXT = L_TXT2 .
CONCATENATE w_vbak-num2 l_txt2 INTO node1-text .
APPEND node1 TO node_table .
************************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 w_vbak-num3 INTO node1-node_key.
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
node1-n_image = '@5B@' .
node1-exp_image = '@5B@' .
node1-expander = 'X'.
* NODE1-TEXT = W_VBAK-NUM3 .
CONCATENATE w_vbak-num3 l_txt3 INTO node1-text .
APPEND node1 TO node_table .
ENDIF.
"在创建次级节点的同时需要创建其字节点
IF ( num = w_vbak-num ) AND ( num1 = w_vbak-num1 ) AND num2 <> w_vbak-num2.
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO node1-node_key .
CONCATENATE w_vbak-num w_vbak-num1 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
CLEAR node1-n_image .
CLEAR node1-exp_image .
node1-expander = 'X'.
"DISPLAY THE NODE VTWEG
* NODE1-TEXT = L_TXT2 .
CONCATENATE w_vbak-num2 l_txt2 INTO node1-text .
APPEND node1 TO node_table .
************************************************************************
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 w_vbak-num3 INTO node1-node_key.
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
node1-n_image = '@5B@' .
node1-exp_image = '@5B@' .
node1-expander = 'X'.
* NODE1-TEXT = W_VBAK-NUM3 .
CONCATENATE w_vbak-num3 l_txt3 INTO node1-text .
APPEND node1 TO node_table .
ENDIF.
IF ( num = w_vbak-num ) AND ( num1 = w_vbak-num1 ) AND num2 = w_vbak-num2 AND num3 <> w_vbak-num3.
CLEAR node1 .
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 w_vbak-num3 INTO node1-node_key.
CONCATENATE w_vbak-num w_vbak-num1 w_vbak-num2 INTO str1 .
node1-relatkey = str1 .
node1-relatship = cl_gui_simple_tree=>relat_last_child .
node1-hidden = '' .
node1-disabled = '' .
node1-isfolder = 'X' .
node1-n_image = '@5B@' .
node1-exp_image = '@5B@' .
node1-expander = 'X'.
* NODE1-TEXT = W_VBAK-NUM3 .
CONCATENATE w_vbak-num3 l_txt3 INTO node1-text .
APPEND node1 TO node_table .
ENDIF.
num = w_vbak-num.
num1 = w_vbak-num1 .
num2 = w_vbak-num2 .
num3 = w_vbak-num3 .
matkl = w_vbak-matkl .
ENDLOOP.
CALL METHOD tree_control->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table
EXCEPTIONS
error_in_node_table = 1
failed = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
* EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK .
* EVENT1-APPL_EVENT = 'X' .
* APPEND EVENT1 TO EVENTS .
event1-eventid = 21 .
event1-appl_event = 'X' .
APPEND event1 TO events .
CALL METHOD tree_control->set_registered_events
EXPORTING
events = events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
OTHERS = 4.
SET HANDLER g_application->handle_selection_changed FOR
tree_control .
ENDFORM. " CREATE_TREE
*316 *&---------------------------------------------------------------------*
*317 *& FORM GET_DATA
*318 *&---------------------------------------------------------------------*
*319 * TEXT
*320 *----------------------------------------------------------------------*
*321 * --> P1 TEXT
*322 * <-- P2 TEXT
*323 *----------------------------------------------------------------------*
FORM get_data .
SELECT
matkl
num1
num2
num3
INTO TABLE t_vbak
FROM zqm_wlz_yz .
IF sy-subrc = 0.
LOOP AT t_vbak.
t_vbak-num = '1'.
MODIFY t_vbak.
ENDLOOP.
ENDIF.
SORT t_vbak BY num matkl .
ENDFORM. " GET_DATA
*336 *&---------------------------------------------------------------------*
*337 *& FORM GET_DATA_GRID
*338 *&---------------------------------------------------------------------*
*339 * TEXT
*340 *----------------------------------------------------------------------*
*341 * -->P_NODEKEY TEXT
*342 *----------------------------------------------------------------------*
FORM get_data_grid USING p_nodekey p_relatkey p_image.
DATA: n1 LIKE zqm_wlz_yz-num1,
n2 LIKE zqm_wlz_yz-num2,
n3 LIKE zqm_wlz_yz-num3.
DATA: l_len1 TYPE i.
DATA: l_len2 TYPE i.
DATA: l_len3 TYPE i.
DATA: l_len11 TYPE i.
DATA: l_len22 TYPE i.
DATA:l1 LIKE node1-relatkey.
DATA:l2 LIKE node1-node_key.
DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE.
CLEAR:zkg1,zkg2,zkg3,ztlines1,ztlines2,ztlines3.
CLEAR: dynpfields, dynpfields[].
dynpfields-fieldname = 'ZKW'. "填入需要读值的字段名
APPEND dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = dynpfields
EXCEPTIONS
OTHERS = 9.
IF sy-subrc = 0.
READ TABLE dynpfields WITH KEY fieldname = 'ZKW'.
zkw = dynpfields-fieldvalue. "备注
ENDIF.
CLEAR: dynpfields, dynpfields[].
dynpfields-fieldname = 'ZTLINES'. "填入需要读值的字段名
APPEND dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = dynpfields
EXCEPTIONS
OTHERS = 9.
IF sy-subrc = 0.
READ TABLE dynpfields WITH KEY fieldname = 'ZTLINES'.
ztlines = dynpfields-fieldvalue. "备注
ENDIF.
IF p_nodekey = '1' AND p_relatkey = ''.
p_nodekey = ''.
IF zmatnr <> ''.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' "AND MARA~MTART = 'ERSA'
"and ( mard~lgort = 'WL01' or mard~lgort = 'MT01')
AND mara~matkl <> '' AND mard~matnr = zmatnr.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA'
* AND MARA~MATKL <> '' AND MARA~MATNR = ZMATNR.
ELSE.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
AND mara~matkl <> ''.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
" SELECT MARA~MATNR
" MARA~MTART
" MARA~BISMT
" MARA~MEINS
" INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
" FROM MARC
" INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
" WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA'
" AND MARA~MATKL <> '' .
ENDIF.
ELSEIF p_relatkey <> ''.
l_len11 = strlen( p_relatkey ) .
l_len11 = l_len11 - 1.
IF l_len11 <= 0.
l1 = ''.
ELSE.
l1 = p_relatkey+1(l_len11).
ENDIF.
p_relatkey = l1.
l_len22 = strlen( p_nodekey ).
l_len22 = l_len22 - 1.
IF l_len22 <= 0.
l2 = ''.
ELSE.
l2 = p_nodekey+1(l_len22).
ENDIF.
p_nodekey = l2.
ENDIF.
IF p_nodekey = '' AND p_relatkey = '' AND p_image = ''.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = ''
* AND MARA~MATKL <> ''.
ELSEIF p_relatkey IS INITIAL AND p_nodekey <> ''.
IF zmatnr <> ''.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
" AND ZQM_WLZ_YZ~NUM1 = P_NODEKEY
AND mara~matkl <> '' AND mard~matnr = zmatnr.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl num1 = p_nodekey.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA'
* AND MARA~MATNR = ZMATNR
* AND ZQM_WLZ_YZ~NUM1 = P_NODEKEY
* AND MARA~MATKL <> ''.
ELSE.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
" AND ZQM_WLZ_YZ~NUM1 = P_NODEKEY
AND mara~matkl <> '' .
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl num1 = p_nodekey.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA' AND
* ZQM_WLZ_YZ~NUM1 = P_NODEKEY
* AND MARA~MATKL <> ''.
ENDIF.
ELSE.
IF p_image IS INITIAL.
l_len1 = strlen( p_nodekey ).
l_len2 = strlen( p_relatkey ).
l_len3 = l_len1 - l_len2.
n1 = p_nodekey+l_len2(l_len3).
IF zmatnr <> ''.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
" AND ZQM_WLZ_YZ~NUM1 = P_RELATKEY
" AND ZQM_WLZ_YZ~NUM2 = N1
AND mara~matkl <> '' AND mard~matnr = zmatnr.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl num1 = p_relatkey num2 = n1.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA' AND
* MARA~MATNR = ZMATNR AND
* ZQM_WLZ_YZ~NUM1 = P_RELATKEY
* AND ZQM_WLZ_YZ~NUM2 = N1
* AND MARA~MATKL <> ''.
ELSE.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
* AND ZQM_WLZ_YZ~NUM1 = P_RELATKEY
* AND ZQM_WLZ_YZ~NUM2 = N1
AND mara~matkl <> ''.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl num1 = p_relatkey num2 = n1.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA' AND
* ZQM_WLZ_YZ~NUM1 = P_RELATKEY
* AND ZQM_WLZ_YZ~NUM2 = N1
* AND MARA~MATKL <> ''.
ENDIF.
ELSE.
IF zmatnr <> ''.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01' )
" AND ZQM_WLZ_YZ~MATKL = P_NODEKEY
AND mara~matkl <> '' AND mard~matnr = zmatnr.
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl .
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
IF t_zmal-matkl <> p_nodekey.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA' AND
* MARA~MATNR = ZMATNR AND
* ZQM_WLZ_YZ~MATKL = P_NODEKEY
* AND MARA~MATKL <> ''.
ELSE.
SELECT mard~matnr "物料号
mara~mtart "物料类型
mard~lgort " 库存地点
mara~meins "单位
mara~matkl "物料组
marc~eisbe "安全库存
marc~bstmi "最小采购量
marc~bstfe "固定采购量
mard~labst "非限制库存
mara~bismt "库格
mard~werks
INTO CORRESPONDING FIELDS OF TABLE t_zmal
FROM mard
INNER JOIN marc ON marc~matnr = mard~matnr AND marc~werks = mard~werks
INNER JOIN mara ON mara~matnr = mard~matnr
" INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
WHERE ( mard~werks = '1011' OR ( mard~werks = '1010' AND mard~lgort = 'EL01' ) )
AND mara~mstae <> '01' AND mara~mtart = 'ERSA'
" and ( mard~lgort = 'WL01' or mard~lgort = 'MT01')
" AND ZQM_WLZ_YZ~MATKL = P_NODEKEY
AND mara~matkl <> '' .
LOOP AT t_zmal.
IF t_zmal-matkl(1) = 'S' .
t_zmal-matkl+0(1) = '0'.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
READ TABLE t_vbak WITH KEY matkl = t_zmal-matkl.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
LOOP AT t_zmal.
IF t_zmal-matkl <> p_nodekey.
DELETE t_zmal.
ENDIF.
ENDLOOP.
* SELECT MARA~MATNR
* MARA~MTART
* MARA~BISMT
* MARA~MEINS
*
* INTO CORRESPONDING FIELDS OF TABLE T_ZMAL
* FROM MARC
* INNER JOIN MARA ON MARA~MATNR = MARC~MATNR
* INNER JOIN ZQM_WLZ_YZ ON ZQM_WLZ_YZ~MATKL = MARA~MATKL
* WHERE MARC~WERKS = '7010' AND MARA~MSTAE <> '01' AND MARA~MTART = 'ERSA' AND
* ZQM_WLZ_YZ~MATKL = P_NODEKEY
* AND MARA~MATKL <> ''.
ENDIF.
ENDIF.
ENDIF.
IF zkw <> ''.
LOOP AT t_zmal.
IF t_zmal-lgort <> zkw.
DELETE t_zmal.
ENDIF.
ENDLOOP.
ENDIF.
*LOOP AT T_ZMAL.
*
*SELECT MATNR
* LGORT
* WERKS
* BISMT
* INTO CORRESPONDING FIELDS OF TABLE Z_MAL
* FROM ZPM_YZ_MAL_ST
* WHERE WERKS = '1010' AND MATNR = T_ZMAL-MATNR AND LGORT = T_ZMAL-LGORT.
* IF SY-SUBRC = 0.
* LOOP AT Z_MAL .
* IF T_ZMAL-BISMT = '' .
* CONCATENATE '/' Z_MAL-BISMT INTO T_ZMAL-BISMT.
* ELSE.
* CONCATENATE T_ZMAL-BISMT '/' Z_MAL-BISMT INTO T_ZMAL-BISMT.
* ENDIF.
*
* ENDLOOP.
* MODIFY T_ZMAL.
* ENDIF.
*
*ENDLOOP.
IF zkg <> ''.
LOOP AT t_zmal.
SEARCH t_zmal-bismt FOR zkg.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDLOOP.
ENDIF.
* IF SY-SUBRC <> 0.
* MESSAGE '此物料组没有对应的物料!' TYPE 'E'.
* EXIT.
* ENDIF.
IF ztlines <> ''.
SPLIT ztlines AT '*' INTO ztlines1 ztlines2 ztlines3.
ENDIF.
LOOP AT t_zmal.
SELECT SINGLE tlines
INTO t_zmal-tlines
FROM zmal
WHERE matnr = t_zmal-matnr.
* AND TLINES IN S_TLINES.
* SELECT SINGLE EISBE BSTMI BSTFE
* INTO (T_ZMAL-EISBE,T_ZMAL-BSTMI,T_ZMAL-BSTFE)
* FROM MARC
* WHERE MATNR = T_ZMAL-MATNR
* AND WERKS = '7010'.
*
* SELECT SINGLE LABST
* INTO T_ZMAL-LABST
* FROM MARD
* WHERE MATNR = T_ZMAL-MATNR
* AND WERKS = '7010'
* AND ( LGORT = 'WL61' OR LGORT = 'MT61' OR LGORT = 'EL61' OR LGORT ='WL65' OR LGORT = 'WL66').
MODIFY t_zmal.
ENDLOOP.
i1 = 0.i2 = 0.i3 = 0.
IF ztlines <> ''.
LOOP AT t_zmal.
IF ztlines1 <> ''.
SEARCH t_zmal-tlines FOR ztlines1.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDIF.
IF ztlines2 <> ''.
SEARCH t_zmal-tlines FOR ztlines2.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDIF.
IF ztlines3 <> ''.
SEARCH t_zmal-tlines FOR ztlines3.
IF sy-subrc <> 0.
DELETE t_zmal.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR t_zmal1.REFRESH t_zmal1.
*LOOP AT T_ZMAL.
*SELECT MATNR BISMT
*INTO CORRESPONDING FIELDS OF TABLE Z_MAL
*FROM ZPM_YZ_MAL
*WHERE MATNR = T_ZMAL-MATNR.
*IF SY-SUBRC = 0.
*LOOP AT Z_MAL.
*MOVE T_ZMAL TO T_ZMAL1.
*T_ZMAL1-BISMT = Z_MAL-BISMT.
*APPEND T_ZMAL1.
*ENDLOOP.
*ELSE.
*MOVE T_ZMAL TO T_ZMAL1.
*APPEND T_ZMAL1.
*ENDIF.
*ENDLOOP.
*CLEAR T_ZMAL.REFRESH T_ZMAL.
*LOOP AT T_ZMAL1.
*MOVE T_ZMAL1 TO T_ZMAL.
*APPEND T_ZMAL.
*ENDLOOP.
*
*IF ZKG <> ''.
*SPLIT ZKW AT '*' INTO ZKG1 ZKG2 ZKG3.
*ENDIF.
*LOOP AT T_ZMAL.
*IF ZKW1 <> ''.
*SEARCH T_ZMAL-BISMT FOR ZKW1.
* IF SY-SUBRC <> 0.
* DELETE T_ZMAL.
*ENDLOOP.* ENDIF.
*ENDIF.
*IF ZKW2 <> ''.
*SEARCH T_ZMAL-BISMT FOR ZKW2.
* IF SY-SUBRC <> 0.
* DELETE T_ZMAL.
* ENDIF.
*ENDIF.
*IF ZKW3 <> ''.
*SEARCH T_ZMAL-BISMT FOR ZKW3.
* IF SY-SUBRC <> 0.
* DELETE T_ZMAL.
* ENDIF.
*ENDIF.
LOOP AT t_zmal .
* PERFORM GET_MD04_DATA USING T_ZMAL-MATNR T_ZMAL-WERKS.
* MOVE-CORRESPONDING ITAB0 TO I_OUT.
* LOOP AT MDEZX WHERE PLAAB = '02'.
* EXCESS = EXCESS + MDEZX-MNG01. "可用库存
* IF MDEZX-DELB0 = 'STOCK' OR MDEZX-DELKZ = 'QM'.
* STOCK = STOCK + MDEZX-MNG01. "STOCK
* ENDIF.
* IF MDEZX-PLUMI = '-'. "DEMAND
* TOTAL_DEMAND = TOTAL_DEMAND + MDEZX-MNG01 * -1.
* ELSE.
* IF MDEZX-DELKZ = 'LA' "SHIPPING NOTIFICATION
* OR MDEZX-DELKZ = 'LE' "NORMAL PO
* OR MDEZX-DELKZ = 'BE'. "SA SCHEDULE LINE
* OPEN_PO = OPEN_PO + MDEZX-MNG01. "OPEN PO
* ENDIF.
* ENDIF
* PERFORM GET_MD04_DATA USING T_ZMAL-MATNR '7010'.
* DATA:OPEN_PO LIKE MDEZ-MNG01.
* LOOP AT MDEZX WHERE PLAAB = '02'.
* IF MDEZX-DELKZ = 'BA' "NORMAL PO
* OR MDEZX-DELKZ = 'BE'. "SA SCHEDULE LINE
* OPEN_PO = OPEN_PO + MDEZX-MNG01. "OPEN PO
* ENDIF.
* ENDLOOP.
* MOVE: OPEN_PO TO T_ZMAL-OPEN_PO .
* CLEAR: OPEN_PO.
SELECT SINGLE labst
INTO t_zmal-open_po
FROM mard
WHERE matnr = t_zmal-matnr
AND lgort = t_zmal-bismt
AND werks = t_zmal-werks.
MODIFY t_zmal.
ENDLOOP.
DATA:zbismt LIKE zpm_cs_mal_st-bismt.
LOOP AT t_zmal .
CLEAR:zbismt.
*-----ECCUpgradeS4--------AB_ZACK--------20221028--------START
* SELECT SINGLE bismt INTO zbismt FROM zpm_cs_mal_st WHERE matnr = t_zmal-matnr .
SELECT bismt INTO zbismt FROM zpm_cs_mal_st
UP TO 1 ROWS WHERE matnr = t_zmal-matnr ORDER BY PRIMARY KEY.ENDSELECT.
*-----ECCUpgradeS4--------ABA_ZACK--------20221028--------END
IF sy-subrc = 0 .
t_zmal-bismt = zbismt.
MODIFY t_zmal.
ENDIF.
ENDLOOP.
PERFORM wlc_labst."2020.6.18 可用库存修改(去除预留)
PERFORM wlc_eisbe."2021.3.25 安全库存筛选
REFRESH t_vbap.
LOOP AT t_zmal .
APPEND t_zmal TO t_vbap.
ENDLOOP.
* PERFORM FRM_WRITE_DATA.
ENDFORM. " GET_DATA_GRID
FORM frm_write_data.
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'MATNR' .
gw_fieldcat-scrtext_l = '物料号' .
gw_fieldcat-outputlen = 18.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'MEINS' .
gw_fieldcat-scrtext_l = '单位' .
gw_fieldcat-outputlen = 4.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'TLINES' .
gw_fieldcat-scrtext_l = '字段长文本' .
gw_fieldcat-outputlen = 50.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'LGORT' .
gw_fieldcat-scrtext_l = '库位' .
gw_fieldcat-outputlen = 5.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'BISMT' .
gw_fieldcat-scrtext_l = '库格' .
gw_fieldcat-outputlen = 10.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'MTART' .
gw_fieldcat-scrtext_l = '物料类型' .
gw_fieldcat-outputlen = 8.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'LABST' .
gw_fieldcat-scrtext_l = '库存余量' .
gw_fieldcat-outputlen = 8.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'BDMNG' .
gw_fieldcat-scrtext_l = '预留数量' .
gw_fieldcat-outputlen = 8.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'LABST1' .
gw_fieldcat-scrtext_l = '实际可用库存' .
gw_fieldcat-outputlen = 10.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'EISBE' .
gw_fieldcat-scrtext_l = '安全库存' .
gw_fieldcat-outputlen = 8.
APPEND gw_fieldcat TO gt_fieldcat .
* CLEAR GW_FIELDCAT .
* GW_FIELDCAT-FIELDNAME = 'OPEN_PO' .
* GW_FIELDCAT-SCRTEXT_L = '在途库存' .
* GW_FIELDCAT-OUTPUTLEN = 8.
* APPEND GW_FIELDCAT TO GT_FIELDCAT .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'BSTMI' .
gw_fieldcat-scrtext_l = '最小采购量' .
gw_fieldcat-outputlen = 10.
APPEND gw_fieldcat TO gt_fieldcat .
CLEAR gw_fieldcat .
gw_fieldcat-fieldname = 'BSTFE' .
gw_fieldcat-scrtext_l = '固定采购量' .
gw_fieldcat-outputlen = 10.
APPEND gw_fieldcat TO gt_fieldcat .
*
**定义列信息
*WA_ALV_FILED-COL_POS = 10.
*WA_ALV_FILED-FIELDNAME = 'BSTFE'. " 对应的内表中的字段名称
*WA_ALV_FILED-SELTEXT_M = '固定采购量'. "ALV中显示的标题
*WA_ALV_FILED-OUTPUTLEN = 10. " 列的显示宽度,可以不设置
*APPEND WA_ALV_FILED TO WA_ALV_FILEDCAT.
*CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
* IT_FIELDCAT = WA_ALV_FILEDCAT
* TABLES
* T_OUTTAB = T_ZMAL.
ENDFORM.
FORM get_md04_data USING p_matnr p_werks.
CLEAR: mdpsx,mdezx,mdsux.
CLEAR: mdpsx[],mdezx[],mdsux[].
CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'
EXPORTING
matnr = p_matnr
werks = p_werks
TABLES
mdpsx = mdpsx
mdezx = mdezx
mdsux = mdsux
EXCEPTIONS
material_plant_not_found = 1
plant_not_found = 2.
ENDFORM. " GET_MD04_DATA
*&---------------------------------------------------------------------*
*& MODULE ZMATNR INPUT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
MODULE zmatnr INPUT.
DATA: BEGIN OF i_mara OCCURS 0,
*-----ECCUpgradeS4--------AB_ZACK--------20221027--------START
* matnr type char22,
matnr TYPE matnr,
*-----ECCUpgradeS4--------AB_ZACK--------20221027--------END
END OF i_mara.
SELECT mara~matnr
INTO CORRESPONDING FIELDS OF TABLE i_mara
FROM marc
INNER JOIN mara ON mara~matnr = marc~matnr
WHERE marc~werks = '7010'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'ZMATNR'
value_org = 'S'
TABLES
value_tab = i_mara
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDMODULE. " ZMATNR INPUT
MODULE zkw INPUT.
DATA: BEGIN OF i_zkw OCCURS 0,
zkw TYPE char6,
lgobe TYPE char16,
END OF i_zkw.
CLEAR i_zkw.REFRESH i_zkw.
i_zkw-zkw = 'WL61'.
APPEND i_zkw.
i_zkw-zkw = 'MT61'.
APPEND i_zkw.
i_zkw-zkw = 'EL61'.
APPEND i_zkw.
i_zkw-zkw = 'WL65'.
APPEND i_zkw.
i_zkw-zkw = 'WL66'.
APPEND i_zkw.
LOOP AT i_zkw.
SELECT SINGLE lgobe INTO i_zkw-lgobe FROM t001l WHERE werks = '7010' AND lgort = i_zkw-zkw.
MODIFY i_zkw.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ZKW'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'ZKW'
value_org = 'S'
TABLES
value_tab = i_zkw
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDMODULE. " ZMATNR INPUT
MODULE zkg INPUT.
DATA: BEGIN OF i_zkg OCCURS 0,
bismt TYPE char50,
END OF i_zkg.
DATA:zkw1(6).
DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE.
CLEAR: dynpfields, dynpfields[],zkw1.CLEAR i_zkg.REFRESH i_zkg.
dynpfields-fieldname = 'ZKW'. "填入需要读值的字段名
APPEND dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = dynpfields
EXCEPTIONS
OTHERS = 9.
IF sy-subrc = 0.
READ TABLE dynpfields WITH KEY fieldname = 'ZKW'.
zkw1 = dynpfields-fieldvalue. "备注
ENDIF.
IF zkw1 <> ''.
SELECT bismt
INTO CORRESPONDING FIELDS OF TABLE i_zkg
FROM zpm_yz_mal_st
WHERE werks = '7010'
AND lgort = zkw1.
ELSE.
SELECT bismt
INTO CORRESPONDING FIELDS OF TABLE i_zkg
FROM zpm_yz_mal_st
WHERE werks = '7010'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BISMT'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'ZKG'
value_org = 'S'
TABLES
value_tab = i_zkg
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDMODULE. " ZMATNR INPUT
*&---------------------------------------------------------------------*
*& Form WLC_LABST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM wlc_labst .
DATA:bdmng LIKE resb-bdmng,
enmng LIKE resb-enmng.
DATA:shkzg LIKE resb-shkzg.
LOOP AT t_zmal.
SELECT bdmng enmng shkzg INTO ( bdmng,enmng,shkzg ) FROM resb WHERE xloek = '' AND kzear = '' AND matnr = t_zmal-matnr AND werks = t_zmal-werks AND lgort = t_zmal-lgort.
IF shkzg = 'H'.
t_zmal-bdmng = t_zmal-bdmng + bdmng - enmng.
ELSE.
t_zmal-bdmng = t_zmal-bdmng - bdmng + enmng.
ENDIF.
CLEAR:bdmng,enmng,shkzg.
ENDSELECT.
t_zmal-labst1 = t_zmal-labst - t_zmal-bdmng.
MODIFY t_zmal.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form WLC_EISBE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM wlc_eisbe .
IF fxk01 <> ''.
LOOP AT t_zmal.
IF t_zmal-labst1 >= t_zmal-eisbe.
DELETE t_zmal.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
最新发布