CT04
创建特性
勾选“附加值”表示除已配置值外,还可以在后续手工配置其他值,不勾选“附加值”则表示只能在配置中选择特性值:
CL02
关联到类
MM01 创建特性并维护
CL31分类查找
物料主数据批量创建特性:CL24N
ABAP
维护特性:
BAPI_CHARACT_CREATE
BAPI_CHARACT_CHANGE
BAPI_CHARACT_DELETE
BAPI_CHARACT_GETDETAIL
维护特性值:
BAPI_OBJCL_GETDETAIL
BAPI_OBJCL_CHANGE
BAPI_OBJCL_GETDETAIL取得到物料的类下面的所有特性值,然后修改特性值,最后用BAPI_OBJCL_CHANGE写回去。
CALL FUNCTION ‘BAPI_OBJCL_GETDETAIL’
EXPORTING
objectkey = 物料号
objecttable = ‘MARA’
classnum = 类别
classtype = 类别种类
tables
allocvaluesnum = 数值型特性值
allocvalueschar = 字符型特性值
allocvaluescurr = 货币型特性值
return = 返回值
QM的批次特性,参数需要用另外的function取得
CALL FUNCTION ‘VB_BATCH_2_CLASS_OBJECT’
EXPORTING
i_matnr = 物料号
i_charg = 批次号
I_WERKS = 工厂
IMPORTING
E_OBJEK = 对应objectkey
E_OBTAB = 对应objecttable
E_KLART = 对应classtype
E_CLASS = 对应classnum
示例:
-
&---------------------------------------------------------------------* & Description: Delivery result interface with MES & Tranpport number: **** & Author: Zhao,Alex YunXiang & Date: 2019.07.30 &---------------------------------------------------------------------* & Change log &---------------------------------------------------------------------* REPORT zmm_r_out_0005. TABLES:nsdm_v_mseg ,resb,ztmm0004_log2,matdoc. TYPE TYPES:BEGIN OF ty_data, box TYPE c, sgtxt TYPE sgtxt, "MES request No. mblnr TYPE mblnr, "Material document zeile TYPE mblpo, "Material document item No. rsnum TYPE rsnum, "Reservation No. rspos TYPE rspos, "Row No. matnr TYPE matnr, "Material No. maktx TYPE maktx, "Material description charg TYPE charg_d, "Batch No. meins TYPE meins, "Basic Unit menge TYPE menge_d, "Quantity zbat_sta TYPE string, components TYPE char30, vfdat TYPE vfdat, qndat TYPE qnpdat, zbat_pro TYPE qnpdat, licha TYPE lichn, z_manufacture TYPE char15, exidv TYPE exidv, lgort TYPE lgort_d, "Original warehouse werks TYPE werks_d, vbeln TYPE vbeln_vl, umlgo TYPE umlgo, zstatus TYPE zstatus_req, aufnr TYPE zaufnr, zreserve1 TYPE zemm_reserve1, zreserve2 TYPE zemm_reserve2, zreserve3 TYPE zemm_reserve3, erdat TYPE erdat, erzet TYPE erzet, xloek TYPE xloek, END OF ty_data. DATA: l_objek TYPE cuobn, l_obtab TYPE tabelle, l_klart TYPE klassenart, l_class TYPE klasse_d, lt_num TYPE TABLE OF bapi1003_alloc_values_num, lt_char TYPE TABLE OF bapi1003_alloc_values_char, lt_curr TYPE TABLE OF bapi1003_alloc_values_curr, lt_return TYPE TABLE OF bapiret2, ls_return TYPE zsmm0001_ret, ls_po TYPE zsmm0005_po, lt_po TYPE TABLE OF zsmm0005_po, wa_fields TYPE LINE OF slis_t_fieldcat_alv, lt_fields TYPE slis_t_fieldcat_alv, lt_data TYPE TABLE OF ty_data, ls_data TYPE ty_data, es_return TYPE zsmm0005_ret, ls_layout TYPE slis_layout_alv. *SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_werks FOR nsdm_v_mseg-werks, "Plant
s_budat FOR matdoc-budat DEFAULT sy-datum. "Posting Date.
SELECTION-SCREEN END OF BLOCK bk1.
INITIALIZATION.
DATA:ls_werks LIKE s_werks.
CLEAR ls_werks.
ls_werks-low = ‘5700’.
ls_werks-option = ‘EQ’.
ls_werks-sign = ‘I’.
APPEND ls_werks TO s_werks.
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM get_data.
PERFORM build_layout USING ls_layout.
PERFORM display_data.
&---------------------------------------------------------------------
*& Form BUILD_LAYOUT
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> LS_LAYOUT
&---------------------------------------------------------------------
FORM build_layout USING p_layout TYPE slis_layout_alv.
p_layout-zebra = ‘X’.
p_layout-colwidth_optimize = ‘X’.
- p_layout-box_fieldname = ‘BOX’.
ENDFORM.
&---------------------------------------------------------------------
*& Form DISPLAY_DATA
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM display_data .
CLEAR wa_fields.
wa_fields-fieldname = ‘sgtxt’.
wa_fields-seltext_l = TEXT-002 . "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘mblnr’.
wa_fields-seltext_l = TEXT-003. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zeile’.
wa_fields-seltext_l = TEXT-004. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘rsnum’.
wa_fields-seltext_l = TEXT-005. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘rspos’.
wa_fields-seltext_l = TEXT-006. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘matnr’.
wa_fields-seltext_l = TEXT-007. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘maktx’.
wa_fields-seltext_l = TEXT-008. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘charg’.
wa_fields-seltext_l = TEXT-009. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘meins’.
wa_fields-seltext_l = TEXT-010. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘menge’.
wa_fields-seltext_l = TEXT-011. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zbat_sta’.
wa_fields-seltext_l = TEXT-012. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘components’.
wa_fields-seltext_l = TEXT-013. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘vfdat’.
wa_fields-seltext_l = TEXT-014. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘qndat’.
wa_fields-seltext_l = TEXT-015. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zbat_pro’.
wa_fields-seltext_l = TEXT-016. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘licha’.
wa_fields-seltext_l = TEXT-017. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘z_manufacture’.
wa_fields-seltext_l = TEXT-018. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘exidv’.
wa_fields-seltext_l = TEXT-019. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘lgort’.
wa_fields-seltext_l = TEXT-020. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘werks’.
wa_fields-seltext_l = TEXT-021. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
- CLEAR wa_fields.
- wa_fields-fieldname = ‘vbeln’.
- wa_fields-seltext_l = ‘Quality status’. "#EC NOTEXT
- APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘umlgo’.
wa_fields-seltext_l = TEXT-022. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zstatus’.
wa_fields-seltext_l = TEXT-023. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘aufnr’.
wa_fields-seltext_l = TEXT-024. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zreserve1’.
wa_fields-seltext_l = TEXT-025. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zreserve2’.
wa_fields-seltext_l = TEXT-026. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘zreserve3’.
wa_fields-seltext_l = TEXT-027. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘erdat’.
wa_fields-seltext_l = TEXT-028. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CLEAR wa_fields.
wa_fields-fieldname = ‘erzet’.
wa_fields-seltext_l = TEXT-029. "#EC NOTEXT
APPEND wa_fields TO lt_fields.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = ‘STANDARD_FULLSCREEN’
-
i_callback_user_command = 'USER_COMMAND'
-
I_CALLBACK_TOP_OF_PAGE = ' '
-
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
-
I_CALLBACK_HTML_END_OF_LIST = ' '
-
I_STRUCTURE_NAME =
-
I_BACKGROUND_ID = ' '
-
I_GRID_TITLE =
-
I_GRID_SETTINGS = is_layout = ls_layout it_fieldcat = lt_fields
-
IT_EXCLUDING =
-
IT_SPECIAL_GROUPS =
-
it_sort = lt_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 = lt_data
EXCEPTIONS
program_error = 1
OTHERS = 2.IF sy-subrc <> 0.
-
Implement suitable error handling here
ENDIF.
ENDFORM.
FORM standard_fullscreen USING rt_extab TYPE slis_t_extab.
SET PF-STATUS ‘STANDARD_FULLSCREEN’ .
ENDFORM. "set_pf_status
&---------------------------------------------------------------------
*& Form GET_DATA
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM get_data .
TYPES :BEGIN OF ty_data.
INCLUDE STRUCTURE nsdm_s_mtdcsa_guid.
TYPES :
rsnum TYPE rsnum,
rspos TYPE rspos,
reversal_movement TYPE xstbw,
mblnr TYPE mblnr,
zeile TYPE mblpo,
charg TYPE charg_d,
menge TYPE menge_d,
meins TYPE meins,
vbeln_im TYPE vbeln_vl,
vbelp_im TYPE posnr_vl,
xauto TYPE mb_xauto,
budat TYPE budat,
werks TYPE werks_d,
matnr TYPE matnr,
erfmg TYPE erfmg,
erfme TYPE bprme,
END OF ty_data.
TYPES :BEGIN OF ty_log2,
sgtxt TYPE sgtxt, "MES request No.
-
mblnr TYPE mblnr, "Material document
-
zeile TYPE mblpo, "Material document item No. rsnum TYPE rsnum, "Reservation No. rspos TYPE rspos, "Row No. matnr TYPE matnr, "Material No. maktx TYPE maktx, "Material description charg TYPE charg_d, "Batch No. meins TYPE meins, "Basic Unit menge TYPE menge_d, "Quantity lgort TYPE lgort_d, "Original warehouse werks TYPE werks_d, vbeln TYPE vbeln_vl, umlgo TYPE umlgo,
-
zstatus TYPE zstatus_req, aufnr TYPE zaufnr, zreserve1 TYPE zemm_reserve1, zreserve2 TYPE zemm_reserve2, zreserve3 TYPE zemm_reserve3, erdat TYPE erdat, erzet TYPE erzet, xloek TYPE xloek, END OF ty_log2.
TYPES:BEGIN OF ty_resb,
-
mblnr type mblnr, "Material document
-
zeile TYPE mblpo, "Material document item No. sgtxt TYPE sgtxt, rsnum TYPE rsnum, "Reservation No. rspos TYPE rspos, "Row No. matnr TYPE matnr, "Material No.
-
maktx "Material description charg TYPE charg_d, "Batch No.
-
meins TYPE meins, "Basic Unit
-
menge TYPE bdmng, "Quantity lgort TYPE lgort_d, "Original warehouse werks TYPE werks_d, umlgo TYPE umlgo,
-
aufnr TYPE aufnr, xloek TYPE xloek, END OF ty_resb.
DATA lt_resb TYPE TABLE OF ty_resb.
DATA:
lt_mdoc TYPE STANDARD TABLE OF ty_data,
lt_zmmt0004_log2 TYPE STANDARD TABLE OF ztmm_0004_log2.AUTHORITY-CHECK OBJECT ‘M_MSEG_WWA’
ID ‘WERKS’ FIELD s_werks-low.
IF sy-subrc <> 0 .
CONCATENATE s_werks-low TEXT-030 INTO DATA(lv_message) SEPARATED BY ‘’.
MESSAGE lv_message TYPE ‘E’.
CLEAR lv_message.
STOP.
ENDIF.SELECT key1 key2 key3 key4 key5 key6 rsnum rspos reversal_movement mblnr zeile charg menge meins vbeln_im vbelp_im xauto budat werks matnr erfmg erfme INTO TABLE lt_mdoc
FROM matdoc WHERE record_type EQ ‘MDOC’
AND mblnr <> ‘0’
AND budat IN s_budat
AND xauto <> ‘X’
AND reversal_movement <> ‘X’
AND cancelled <> ‘X’.SORT lt_mdoc BY rsnum rspos.
IF lt_mdoc IS NOT INITIAL.SELECT venum, vepos, vbeln, posnr, matnr, vemng, vemeh INTO TABLE @DATA(lt_vepo)
FROM vepo FOR ALL ENTRIES IN @lt_mdoc
WHERE vbeln = @lt_mdoc-vbeln_im.SELECT * FROM ztmm0004_log2 INTO CORRESPONDING FIELDS OF TABLE lt_zmmt0004_log2
FOR ALL ENTRIES IN lt_mdoc
WHERE rsnum = lt_mdoc-rsnum
AND zrspos = lt_mdoc-rspos
AND msg_type = ‘S’.SELECT matnr, charg, vfdat, licha INTO TABLE @DATA(t_mch1) FROM mch1
FOR ALL ENTRIES IN @lt_mdoc
WHERE matnr = @lt_mdoc-matnr
AND charg = @lt_mdoc-charg.SELECT matnr, werks, charg, qndat INTO TABLE @DATA(t_mcha) FROM mcha
FOR ALL ENTRIES IN @lt_mdoc
WHERE matnr = @lt_mdoc-matnr
AND werks = @lt_mdoc-werks
AND charg = @lt_mdoc-charg. -
SELECT * FROM ztmm0005_log2 INTO TABLE @DATA(lt_check) WHERE zmsg_type = ‘S’.
SELECT * FROM ztmm0005_log2 INTO TABLE @DATA(lt_check) FOR ALL ENTRIES IN @lt_zmmt0004_log2
WHERE sgtxt = @lt_zmmt0004_log2-sgtxt. -
AND erdat = @sy-datum.
IF lt_zmmt0004_log2 IS NOT INITIAL.
SELECT sgtxt "MES request No.
rsnum "Reservation No.
rspos "Row No.
matnr "Material No.
charg "Batch No.
lgort "Original warehouse
werks
umlgo -
aufnr xloek FROM resb INTO TABLE lt_resb FOR ALL ENTRIES IN lt_zmmt0004_log2 WHERE rsnum = lt_zmmt0004_log2-rsnum AND rspos = lt_zmmt0004_log2-zrspos.
ENDIF.
ENDIF.
SORT lt_zmmt0004_log2 BY rsnum zrspos msg_type.
SORT lt_mdoc BY vbeln_im vbelp_im.LOOP AT lt_vepo ASSIGNING FIELD-SYMBOL(<fs_vepo>) .
-
LOOP AT lt_mdoc ASSIGNING FIELD-SYMBOL(<fs_mdoc>) .
READ TABLE lt_mdoc ASSIGNING FIELD-SYMBOL(<fs_mdoc>) WITH KEY vbeln_im = <fs_vepo>-vbeln vbelp_im = <fs_vepo>-posnr BINARY SEARCH.
IF sy-subrc = 0 .
READ TABLE lt_zmmt0004_log2 ASSIGNING FIELD-SYMBOL(<fs_log2>) WITH KEY rsnum = <fs_mdoc>-rsnum
zrspos = <fs_mdoc>-rspos
msg_type = ‘S’ BINARY SEARCH.
IF sy-subrc = 0.
SORT lt_resb BY rsnum rspos.
READ TABLE lt_resb ASSIGNING FIELD-SYMBOL(<fs_resb>) WITH KEY rsnum = <fs_mdoc>-rsnum
rspos = <fs_mdoc>-rspos BINARY SEARCH.
IF sy-subrc = 0 .
ls_data-sgtxt = <fs_log2>-sgtxt. "MES request No.
ls_data-mblnr = <fs_mdoc>-mblnr. "Material documentls_data-zeile = <fs_mdoc>-zeile. "Material document item No. ls_data-rsnum = <fs_resb>-rsnum. "Reservation No. ls_data-rspos = <fs_resb>-rspos. "Row No. ls_data-matnr = |{ <fs_resb>-matnr ALPHA = OUT }|. "Material No. SELECT SINGLE maktx INTO @DATA(l_maktx) FROM makt WHERE matnr = @<fs_resb>-matnr AND spras = '1'. ls_data-maktx = l_maktx. "Material description ls_data-charg = <fs_mdoc>-charg. "Batch No. *Modify by Alex 2020.05.07 Start *Old ls_data-meins = <fs_mdoc>-meins. "Basic Unit DATA: e_menge TYPE ekpo-menge, i_matnr TYPE mara-matnr, i_in_me TYPE mara-meins, i_out_me TYPE mara-meins, i_menge TYPE ekpo-menge. i_matnr = <fs_resb>-matnr . i_in_me = <fs_vepo>-vemeh. i_out_me = <fs_mdoc>-erfme. i_menge = <fs_vepo>-vemng. CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' EXPORTING i_matnr = i_matnr i_in_me = i_in_me i_out_me = i_out_me i_menge = i_menge IMPORTING e_menge = e_menge EXCEPTIONS error_in_application = 1 error = 2 OTHERS = 3. IF sy-subrc <> 0.
- Implement suitable error handling here
ENDIF.
*Modified by alex 2020.05.15 Sart
- Implement suitable error handling here
-
ls_data-menge = <fs_vepo>-vemng. "Quantity ls_data-menge = e_menge. *modified by alex 2020.05.15 End *New ls_data-meins = <fs_mdoc>-erfme. "Basic Unit
-
ls_data-menge = <fs_mdoc>-erfmg. "Quantity *Modify by Alex 2020.05.07 End ls_data-lgort = <fs_log2>-lgort. "Original warehouse ls_data-werks = <fs_resb>-werks. ls_data-vbeln = <fs_mdoc>-vbeln_im. ls_data-umlgo = <fs_resb>-umlgo. ls_data-werks = <fs_resb>-werks. ls_data-aufnr = |{ <fs_log2>-aufnr ALPHA = OUT }|. CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT' EXPORTING i_matnr = <fs_resb>-matnr i_charg = <fs_mdoc>-charg i_werks = <fs_resb>-werks IMPORTING e_objek = l_objek e_obtab = l_obtab e_klart = l_klart e_class = l_class. CALL FUNCTION 'BAPI_OBJCL_GETDETAIL' EXPORTING
-
objectkey = l_objek objecttable = l_obtab classnum = l_class classtype = l_klart objectkey_long = l_objek
-
importing
-
STATUS =
-
STANDARDCLASS = TABLES allocvaluesnum = lt_num allocvalueschar = lt_char allocvaluescurr = lt_curr return = lt_return. TRY. DATA(l_components) = lt_char[ charact = 'Z_COMPONENTS' ]-value_char. CATCH cx_sy_itab_line_not_found. CLEAR l_components. ENDTRY. ls_data-components = l_components. DATA l_date LIKE cawn-atwrt. READ TABLE lt_num ASSIGNING FIELD-SYMBOL(<fs_num>) WITH KEY charact = 'LOBM_HSDAT'. IF sy-subrc = 0. CALL FUNCTION 'CTCV_CONVERT_FLOAT_TO_DATE' EXPORTING float = <fs_num>-value_from IMPORTING date = l_date. ls_data-zbat_pro = l_date. ENDIF. *expiration date TRY . DATA l_vfdat LIKE cawn-atflv. DATA g_vfdat LIKE cawn-atwrt. l_vfdat = lt_num[ charact = 'LOBM_VFDAT' ]-value_from. CALL FUNCTION 'CTCV_CONVERT_FLOAT_TO_DATE' EXPORTING float = l_vfdat IMPORTING date = g_vfdat. CATCH cx_sy_itab_line_not_found . CLEAR l_vfdat . CLEAR g_vfdat. ENDTRY . ls_data-vfdat = g_vfdat. *z_manufacture READ TABLE lt_char ASSIGNING FIELD-SYMBOL(<fs_char>) WITH KEY charact = 'Z_MANUFACTURE'. IF sy-subrc = 0. ls_data-z_manufacture = <fs_char>-value_char . ENDIF. TRY . DATA(l_licha) = lt_char[ charact = 'LOBM_LICHA' ]-value_char. CATCH cx_sy_itab_line_not_found . CLEAR l_licha . ENDTRY . ls_data-licha = l_licha. CLEAR l_licha. TRY. DATA(zbat_sta) = lt_char[ charact = 'LOBM_UDCODE' ]-value_char. CATCH cx_sy_itab_line_not_found. CLEAR zbat_sta. ENDTRY. SPLIT zbat_sta AT '' INTO DATA(str1) DATA(str2). CONDENSE str1 NO-GAPS. CONDENSE str2 NO-GAPS. SELECT SINGLE kurztext FROM qpct INTO @DATA(txt) WHERE codegruppe = @str1 AND code = @str2 AND sprache = 'E' AND katalogart = '3'. ls_data-zbat_sta = txt. *Retest date TRY . DATA(l_qndat) = t_mcha[ matnr = <fs_mdoc>-matnr werks = <fs_mdoc>-werks charg = <fs_mdoc>-charg ]-qndat. CATCH cx_sy_itab_line_not_found . CLEAR l_qndat . ENDTRY. ls_data-qndat = l_qndat. CLEAR l_qndat. **Delete by Alex 2020.04.10_ start *Old SELECT SINGLE exidv FROM vekp INTO @DATA(l_exidv) WHERE venum = @<fs_vepo>-venum. *Add new SELECT SINGLE vlenr FROM ltap INTO @DATA(l_exidv) WHERE vbeln = @ls_data-vbeln AND matnr = @<fs_resb>-matnr AND werks = @<fs_resb>-werks AND charg = @ls_data-charg. **Delete by Alex 2020.04.10_ end l_exidv = |{ l_exidv ALPHA = OUT }|. ENDIF. ls_data-exidv = l_exidv. ls_data-lgort = <fs_resb>-lgort. ls_data-umlgo = <fs_resb>-umlgo. ls_data-zstatus = <fs_log2>-zstatus. ls_data-werks = <fs_resb>-werks. ls_data-zreserve1 = <fs_log2>-zreserve1. ls_data-zreserve2 = <fs_log2>-zreserve2. ls_data-zreserve3 = <fs_log2>-zreserve3. ls_data-erdat = <fs_log2>-erdat. ls_data-erzet = <fs_log2>-erzet. ELSE. CONTINUE. ENDIF. ELSE. CONTINUE. ENDIF.
IF lt_check IS NOT INITIAL.
SORT lt_check BY sgtxt zmsg_type erdat.
READ TABLE lt_check ASSIGNING FIELD-SYMBOL(<fs_check>) WITH KEY sgtxt = ls_data-sgtxt
zmsg_type = 'E'
erdat = sy-datum BINARY SEARCH.
IF sy-subrc = 0 .
APPEND ls_data TO lt_data.
ls_po = CORRESPONDING #( ls_data ).
APPEND ls_po TO lt_po.
ELSE.
READ TABLE lt_check ASSIGNING FIELD-SYMBOL(<fs_check2>) WITH KEY sgtxt = ls_data-sgtxt
zmsg_type = 'S'
erdat = sy-datum BINARY SEARCH.
IF sy-subrc <> 0 .
APPEND ls_data TO lt_data.
ls_po = CORRESPONDING #( ls_data ).
APPEND ls_po TO lt_po.
ENDIF.
ENDIF.
ELSE." haven't send data to MES
APPEND ls_data TO lt_data.
ls_po = CORRESPONDING #( ls_data ).
APPEND ls_po TO lt_po.
ENDIF.
CLEAR ls_po.
CLEAR ls_data.
ENDLOOP.
IF lt_po IS NOT INITIAL.
*CALL FM
CALL FUNCTION 'ZFM_MM_OUT_0005'
EXPORTING
it_data = lt_po
IMPORTING
es_return = es_return.
ENDIF.
ENDFORM.