MM特性

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 document

       ls_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
  •      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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值