1.使用新函数:CO_SE_PRODORD_CMP_CHANGE
直接使用CO_XT_COMPONENT_CHANGE门槛很高,CO_SE_PRODORD_CMP_CHANGE是对CO_XT_COMPONENT_CHANGE的封装。

简单测试能修改成功组件需求数量,不知道有没有坑
DATA: lt_components TYPE cose_t_cmp_change,
ls_component TYPE cose_s_cmp_change,
ls_return TYPE bapiret2,
lv_error TYPE xfeld.
ls_component-reservation_no = '0000064367'.
ls_component-reservation_item = '0002'.
ls_component-reservation_type = space.
SELECT SINGLE werks matnr
INTO ( ls_component-plant,ls_component-material )
FROM resb
WHERE rsnum = ls_component-reservation_no
AND rspos = ls_component-reservation_item
AND rsart = ls_component-reservation_type.
ls_component-plant_x = abap_true.
ls_component-material_x = abap_true.
ls_component-quantity = 417.
ls_component-quantity_x = abap_true.
APPEND ls_component TO lt_components.
CLEAR ls_component.
CALL FUNCTION 'CO_SE_PRODORD_CMP_CHANGE'
EXPORTING
iv_order_number = '000040005104'
it_components = lt_components
* IV_REFRESH = ABAP_TRUE
iv_commit = 'X'
IMPORTING
es_return = ls_return
e_error_occurred = lv_error.
2.还可以使用传统BAPI
BAPI_NETWORK_COMP_CHANGE
BAPI_NETWORK_COMP_ADD
BAPI_NETWORK_COMP_REMOVE
*&---------------------------------------------------------------------*
*& Report ZPPD006
*&---------------------------------------------------------------------*
*& 生产订单组件批量导入
*&---------------------------------------------------------------------*
REPORT zppd006.
TABLES: sscrfields.
TYPES: BEGIN OF ty_out,
* sel TYPE char01,
icon TYPE char4,
pre_check_type TYPE bapiret2-type,
aufnr TYPE afko-aufnr, "生产订单号
werks TYPE werks_d, "工厂
lgort TYPE lgort_d, "库存地点
matnr TYPE matnr, "物料
maktx TYPE makt-maktx,
charg TYPE charg_d, "批次
entry_quantity TYPE co_menge, "数量
base_uom TYPE meins, "单位
backflush TYPE rgekz, "反冲标识
type_of_pur_resv TYPE type_of_pur_resv, "采购需求类型
type TYPE bapiret2-type,
message TYPE bapiret2-message,
END OF ty_out.
DATA:gt_out TYPE TABLE OF ty_out.
* ALV相关的变量
DATA: go_grid TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo,
gt_fieldcat TYPE lvc_t_fcat,
gs_variant TYPE disvariant,
gs_fieldcat LIKE LINE OF gt_fieldcat,
gt_exclude TYPE slis_t_extab,
gv_repid TYPE syrepid.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.
PARAMETERS:p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN:FUNCTION KEY 1.
INITIALIZATION.
PERFORM initializtion.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM frm_file_path USING p_file.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_download_template.
ENDCASE.
START-OF-SELECTION.
IF p_file IS INITIAL.
MESSAGE s001(00) WITH '请选择导入模板' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
PERFORM frm_upload.
PERFORM frm_call_bapi.
PERFORM frm_proc_data.
PERFORM frm_display_alv.
*&---------------------------------------------------------------------*
*& Form INITIALIZTION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM initializtion .
sscrfields-functxt_01 = icon_export && '下载模板'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILE_PATH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->p_path text
*&---------------------------------------------------------------------*
FORM frm_file_path USING p_path.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
* FIELD_NAME = ' '
IMPORTING
file_name = p_path.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_download_template.
DATA: lv_file TYPE rlgrap-filename,
lv_objid TYPE wwwdata-objid,
ls_key LIKE wwwdatatab,
lv_subrc TYPE sy-subrc,
lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_default_file_name TYPE string,
lv_fname TYPE string.
CASE sscrfields-ucomm..
WHEN 'FC01'.
lv_fname = |生产订单组件导入模板{ sy-datum }{ sy-uzeit }.xlsx|.
DATA:lv_title TYPE string.
lv_title = '选择文件'.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
* window_title = '请选择路径'
window_title = lv_title
default_file_name = lv_fname
file_filter = 'Excel (*.xlsx)'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF lv_fullpath IS INITIAL.
RETURN.
* LEAVE LIST-PROCESSING.
ENDIF.
lv_file = lv_fullpath.
lv_objid = 'ZPPD006'.
SELECT SINGLE *
FROM wwwdata
INTO CORRESPONDING FIELDS OF ls_key
WHERE objid = lv_objid
AND relid = 'MI'.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_key
destination = lv_file
IMPORTING
rc = lv_subrc.
IF lv_subrc = 0.
MESSAGE s000(zmm001).
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_upload .
DATA:lt_file TYPE STANDARD TABLE OF alsmex_tabline,
ls_file TYPE alsmex_tabline,
lv_filenm LIKE rlgrap-filename.
TYPES: BEGIN OF ty_data,
aufnr TYPE afko-aufnr, "生产订单号
werks TYPE werks_d, "工厂
lgort TYPE lgort_d, "库存地点
matnr TYPE matnr, "物料
charg TYPE charg_d, "批次
entry_quantity TYPE co_menge, "数量
base_uom TYPE meins, "单位
backflush TYPE rgekz, "反冲标识
type_of_pur_resv TYPE type_of_pur_resv, "采购需求类型
END OF ty_data.
DATA: lt_data TYPE TABLE OF ty_data,
ls_data TYPE ty_data,
ls_out TYPE ty_out.
FIELD-SYMBOLS: <fs> TYPE any.
* File
lv_filenm = p_file.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lv_filenm
i_begin_col = 1
i_begin_row = 2 "
i_end_col = 10 " 最大列数
i_end_row = 10000 "最大行数
TABLES
intern = lt_file
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE s002(zmm001) DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
TRY.
LOOP AT lt_file INTO ls_file.
ASSIGN COMPONENT ls_file-col OF STRUCTURE ls_data TO <fs>. "动态方法将值传到相应的内表
IF <fs> IS ASSIGNED.
<fs> = ls_file-value.
ENDIF.
AT END OF row.
APPEND ls_data TO lt_data.
CLEAR ls_data.
ENDAT.
ENDLOOP.
CATCH cx_root INTO DATA(lo_ex).
MESSAGE lo_ex->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDTRY.
DATA: lv_msg TYPE string.
LOOP AT lt_data INTO ls_data.
MOVE-CORRESPONDING ls_data TO ls_out.
ls_out-aufnr = |{ ls_out-aufnr ALPHA = IN }|.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ls_out-matnr
IMPORTING
output = ls_out-matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
SELECT COUNT(*)
FROM afko
WHERE aufnr = ls_out-aufnr.
IF sy-subrc NE 0.
ls_out-pre_check_type = 'E'.
ls_out-icon = icon_red_light.
ls_out-message = |生产订单:{ ls_data-aufnr }不存在|.
CONDENSE ls_out-message NO-GAPS.
ENDIF.
IF ls_out-pre_check_type IS INITIAL.
SELECT COUNT(*)
FROM t001l
WHERE werks = ls_out-werks
AND lgort = ls_out-lgort.
IF sy-subrc NE 0.
ls_out-pre_check_type = 'E'.
ls_out-icon = icon_red_light.
ls_out-message = |工厂{ ls_out-werks },库存地点{ ls_out-lgort }不存在|.
ENDIF.
ENDIF.
IF ls_out-pre_check_type IS INITIAL.
SELECT SINGLE meins INTO @DATA(lv_meins)
FROM mara
WHERE matnr = @ls_out-matnr.
IF sy-subrc NE 0.
ls_out-pre_check_type = 'E'.
ls_out-icon = icon_red_light.
ls_out-message = |物料{ ls_out-matnr }不存在|.
CONDENSE ls_out-message NO-GAPS.
ENDIF.
ENDIF.
IF ls_out-entry_quantity IS INITIAL.
ls_out-pre_check_type = 'E'.
ls_out-icon = icon_red_light.
IF ls_out-message IS INITIAL.
ls_out-message = '数量必填'.
ELSE.
ls_out-message = ls_out-message && '/数量必填'.
ENDIF.
ENDIF.
IF ls_out-base_uom IS INITIAL.
ls_out-base_uom = lv_meins.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = ls_out-base_uom
IMPORTING
output = ls_out-base_uom
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc NE 0.
ls_out-pre_check_type = 'E'.
ls_out-icon = icon_red_light.
IF ls_out-message IS INITIAL.
ls_out-message = |单位{ ls_out-base_uom }不存在|.
ELSE.
ls_out-message = ls_out-message && |/单位{ ls_out-base_uom }不存在|.
ENDIF.
ENDIF.
ENDIF.
APPEND ls_out TO gt_out.
CLEAR:
ls_data,
lv_meins,
ls_out.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_BAPI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_call_bapi .
DATA: "lt_comp TYPE TABLE OF bapi_network_comp_list,
"ls_comp TYPE bapi_network_comp_list,
lt_comp1 TYPE TABLE OF bapi_order_component,
lt_comp_remove TYPE TABLE OF bapi_network_comp_id,
ls_comp_remove TYPE bapi_network_comp_id,
lt_message TYPE TABLE OF bapi_meth_message,
ls_message TYPE bapi_meth_message,
lt_comp_add TYPE TABLE OF bapi_network_comp_add,
ls_comp_add TYPE bapi_network_comp_add,
lt_comp_change TYPE TABLE OF bapi_network_comp_change,
ls_comp_change TYPE bapi_network_comp_change,
lt_comp_change_ud TYPE TABLE OF bapi_network_comp_cng_upd,
ls_comp_change_ud TYPE bapi_network_comp_cng_upd,
ls_order_objects TYPE bapi_pp_order_objects,
lt_operation TYPE TABLE OF bapi_order_operation1,
lv_vornr TYPE cn_vornr,
lv_itemno TYPE aposn,
lv_maxno TYPE aposn,
lv_msg TYPE string,
lv_msgty TYPE bapiret2-type.
DATA: BEGIN OF lt_change OCCURS 0,
matnr TYPE matnr,
charg TYPE resb-charg,
END OF lt_change.
DATA: BEGIN OF lt_add OCCURS 0,
matnr TYPE matnr,
charg TYPE resb-charg,
END OF lt_add.
LOOP AT gt_out INTO DATA(ls_group) WHERE pre_check_type NE 'E'
GROUP BY ( aufnr = ls_group-aufnr ).
CLEAR:
ls_order_objects,
lt_operation[],
lt_comp1[],
* lt_comp[],
lt_comp_change[],
lt_comp_change_ud[],
lt_message[],
lt_change[],
lt_add[],
lv_maxno,
lv_itemno,
lv_vornr.
ls_order_objects-operations = abap_true.
ls_order_objects-components = abap_true.
CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
EXPORTING
number = ls_group-aufnr
order_objects = ls_order_objects
TABLES
operation = lt_operation
component = lt_comp1.
READ TABLE lt_operation INTO DATA(ls_operation) INDEX 1.
IF sy-subrc = 0.
lv_vornr = ls_operation-operation_number.
ENDIF.
SORT lt_comp1 BY item_number DESCENDING.
READ TABLE lt_comp1 INTO DATA(ls_comp1) INDEX 1.
IF sy-subrc = 0.
lv_maxno = ls_comp1-item_number.
ELSE.
lv_maxno = '0000'.
ENDIF.
lv_itemno = lv_maxno.
* CALL FUNCTION 'BAPI_NETWORK_COMP_GETLIST'
* EXPORTING
* number = ls_group-aufnr
* TABLES
* e_components_list = lt_comp.
*
** 排除已删除的行
* PERFORM frm_filter_deldata TABLES lt_comp1
* lt_comp.
*
* SORT lt_comp BY material_long.
DELETE lt_comp1 WHERE deletion_indicator = abap_true.
SORT lt_comp1 BY material_long batch.
LOOP AT gt_out INTO DATA(ls_out) WHERE pre_check_type NE 'E'
AND aufnr = ls_group-aufnr.
CLEAR:
ls_comp1,
ls_comp_change,ls_comp_change_ud.
TRANSLATE ls_out-backflush TO UPPER CASE.
READ TABLE lt_comp1 INTO ls_comp1 WITH KEY material_long = ls_out-matnr
batch = ls_out-charg
BINARY SEARCH.
IF sy-subrc = 0. "修改
ls_comp_change-component = ls_comp1-reservation_number && ls_comp1-reservation_item && ls_comp1-reservation_type.
ls_comp_change_ud-component = ls_comp_change-component.
ls_comp_change-entry_quantity = ls_out-entry_quantity.
ls_comp_change_ud-entry_quantity = abap_true.
ls_comp_change-base_uom = ls_out-base_uom.
ls_comp_change_ud-base_uom = abap_true.
ls_comp_change-stge_loc = ls_out-lgort.
ls_comp_change_ud-stge_loc = abap_true.
ls_comp_change-batch = ls_out-charg.
ls_comp_change_ud-batch = abap_true.
ls_comp_change-backflush = ls_out-backflush.
ls_comp_change_ud-backflush = abap_true.
lt_change-matnr = ls_out-matnr.
lt_change-charg = ls_out-charg.
APPEND ls_comp_change TO lt_comp_change.
APPEND ls_comp_change_ud TO lt_comp_change_ud.
APPEND lt_change.
CLEAR: lt_change.
ELSE. "新增
lv_itemno = lv_itemno + 10.
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'
EXPORTING
input = lv_itemno
IMPORTING
output = lv_itemno.
ls_comp_add-item_number = lv_itemno.
ls_comp_add-activity = lv_vornr.
ls_comp_add-material_long = ls_out-matnr.
ls_comp_add-entry_quantity = ls_out-entry_quantity.
ls_comp_add-type_of_pur_resv = ls_out-type_of_pur_resv. "采购需求类型
ls_comp_add-base_uom = ls_out-base_uom.
ls_comp_add-backflush = ls_out-backflush.
ls_comp_add-item_cat = 'L'."项目类别
ls_comp_add-plant = ls_out-werks.
ls_comp_add-stge_loc = ls_out-lgort.
ls_comp_add-batch = ls_out-charg.
APPEND ls_comp_add TO lt_comp_add.
CLEAR: ls_comp_add.
lt_add-matnr = ls_out-matnr.
lt_add-charg = ls_out-charg.
APPEND lt_add.
CLEAR: lt_add.
ENDIF.
ENDLOOP.
CLEAR:
lv_msg,
lv_msgty.
IF lt_comp_change[] IS NOT INITIAL.
SORT lt_change BY matnr charg.
CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE'
EXPORTING
number = ls_group-aufnr
* IMPORTING
* RETURN =
TABLES
i_components_change = lt_comp_change
i_components_change_update = lt_comp_change_ud
e_message_table = lt_message.
LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.
lv_msg = lv_msg && ls_message-message_text.
CLEAR:ls_message.
ENDLOOP.
IF sy-subrc = 0.
lv_msgty = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
lv_msgty = 'S'.
lv_msg = '修改成功'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ENDIF.
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>) WHERE aufnr = ls_group-aufnr
AND pre_check_type NE 'E'.
READ TABLE lt_change TRANSPORTING NO FIELDS WITH KEY matnr = <fs_out>-matnr
charg = <fs_out>-charg
BINARY SEARCH.
IF sy-subrc = 0.
<fs_out>-type = lv_msgty.
<fs_out>-message = lv_msg.
IF lv_msgty = 'E'.
<fs_out>-icon = icon_red_light.
ELSE.
<fs_out>-icon = icon_green_light.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR: lv_msg,lv_msgty,lt_message.
IF lt_comp_add[] IS NOT INITIAL.
SORT lt_add BY matnr charg.
CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'
EXPORTING
number = ls_group-aufnr
TABLES
i_components_add = lt_comp_add
e_message_table = lt_message.
LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.
lv_msg = lv_msg && ls_message-message_text.
CLEAR:ls_message.
ENDLOOP.
IF sy-subrc = 0.
lv_msgty = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
lv_msgty = 'S'.
lv_msg = '新增成功'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ENDIF.
LOOP AT gt_out ASSIGNING <fs_out> WHERE aufnr = ls_group-aufnr
AND pre_check_type NE 'E'.
READ TABLE lt_add TRANSPORTING NO FIELDS WITH KEY matnr = <fs_out>-matnr
charg = <fs_out>-charg
BINARY SEARCH.
IF sy-subrc = 0.
<fs_out>-type = lv_msgty.
<fs_out>-message = lv_msg.
IF lv_msgty = 'E'.
<fs_out>-icon = icon_red_light.
ELSE.
<fs_out>-icon = icon_green_light.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR: ls_group.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILTER_DELDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_LT_COMP1 text
* -->P_LT_COMP text
*&---------------------------------------------------------------------*
*FORM frm_filter_deldata TABLES lt_comp1 STRUCTURE bapi_order_component
* lt_comp STRUCTURE bapi_network_comp_list.
*
*
* DATA:lt_comp_del TYPE TABLE OF bapi_network_comp_list,
* ls_comp TYPE bapi_network_comp_list.
*
*
* LOOP AT lt_comp1 INTO DATA(ls_comp1) WHERE deletion_indicator = abap_true.
* ls_comp-component = ls_comp1-reservation_number && ls_comp1-reservation_item.
* ls_comp-material = ls_comp1-material.
* ls_comp-material_long = ls_comp1-material_long.
* ls_comp-plant = ls_comp1-prod_plant.
* APPEND ls_comp TO lt_comp_del.
* CLEAR: ls_comp.
* ENDLOOP.
*
* SORT lt_comp_del BY component.
*
* LOOP AT lt_comp INTO ls_comp.
* READ TABLE lt_comp_del TRANSPORTING NO FIELDS WITH KEY component = ls_comp-component BINARY SEARCH.
* IF sy-subrc = 0.
* DELETE lt_comp.
* ENDIF.
* ENDLOOP.
*
*
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
DATA:ls_layout TYPE lvc_s_layo.
ls_layout-zebra = abap_true.
ls_layout-sel_mode = 'A'.
ls_layout-cwidth_opt = abap_true.
PERFORM frm_build_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-cprog
i_bypassing_buffer = abap_true
is_layout_lvc = ls_layout
it_fieldcat_lvc = gt_fieldcat
* i_callback_pf_status_set = 'FRM_PF_STATUS'
* i_callback_user_command = 'FRM_USER_COMMAND'
* it_events = lt_event
TABLES
t_outtab = gt_out
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.
*&---------------------------------------------------------------------*
*& Form FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_build_fieldcat.
DEFINE mcr_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-scrtext_s = &2.
gs_fieldcat-scrtext_l = &2.
gs_fieldcat-scrtext_m = &2.
gs_fieldcat-key = &3.
gs_fieldcat-checkbox = &4.
gs_fieldcat-edit = &5.
gs_fieldcat-hotspot = &6.
gs_fieldcat-ref_table = &7.
gs_fieldcat-ref_field = &8.
gs_fieldcat-icon = &9.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
mcr_fieldcat 'ICON' '消息状态' '' '' '' '' '' '' ''.
mcr_fieldcat 'MESSAGE' '消息' '' '' '' '' '' '' ''.
mcr_fieldcat 'AUFNR' '生产订单号' '' '' '' '' 'AFKO' 'AUFNR' ''.
mcr_fieldcat 'WERKS' '工厂' '' '' '' '' 'T001L' 'WERKS' ''.
mcr_fieldcat 'LGORT' '库存地点' '' '' '' '' 'T001L' 'LGORT' ''.
mcr_fieldcat 'MATNR' '组件物料编码' '' '' '' '' 'MARA' 'MATNR' ''.
mcr_fieldcat 'MAKTX' '组件物料描述' '' '' '' '' 'MAKT' 'MAKTX' ''.
mcr_fieldcat 'CHARG' '批次' '' '' '' '' 'MCH1' 'CHARG' ''.
mcr_fieldcat 'ENTRY_QUANTITY' '数量' '' '' '' '' 'MSEG' 'MENGE' ''.
mcr_fieldcat 'BASE_UOM' '单位' '' '' '' '' 'MARA' 'MEINS' ''.
mcr_fieldcat 'BACKFLUSH' '反冲标识' '' '' '' '' '' '' ''.
mcr_fieldcat 'TYPE_OF_PUR_RESV' '采购类型' '' '' '' '' '' '' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROC_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_proc_data .
IF gt_out[] IS NOT INITIAL.
SELECT matnr,maktx
INTO TABLE @DATA(lt_makt)
FROM makt
FOR ALL ENTRIES IN @gt_out
WHERE matnr = @gt_out-matnr
AND spras = @sy-langu.
SORT lt_makt BY matnr.
ENDIF.
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).
READ TABLE lt_makt INTO DATA(ls_makt) WITH KEY matnr = <fs_out>-matnr BINARY SEARCH.
IF sy-subrc = 0.
<fs_out>-maktx = ls_makt-maktx.
ENDIF.
ENDLOOP.
ENDFORM.