当前位置: 首页 > news >正文

SAP MM物料主数据变更接口分享

一、接口逻辑

SAP提供接口,OA调用

1)输入参数和输出参数

2)逻辑补充

二、接口代码

FUNCTION z_fmmm_0020.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_DATA_GD) TYPE  ZSBC_IF_GD OPTIONAL
*"     VALUE(I_INPUT) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     VALUE(E_OUTPUT) TYPE  STRING
*"----------------------------------------------------------------------

  DATA: ls_input          TYPE zsmm_input_020,
        ls_output         TYPE zsmm_output_020,
        lt_output         TYPE zssmm_output_020,
        lwa_output        TYPE zssmm_output_020,
        lt_base_data      TYPE zttmm_input_020_base,
        lt_sales_data     TYPE zttmm_input_020_sales,
        lt_purchase_data  TYPE zttmm_input_020_purchase,
        lt_mrp_data       TYPE zttmm_input_020_mrp,
        lt_account_data   TYPE zttmm_input_020_account,
        lwa_sales_data    TYPE zssmm_input_020_sales,
        lwa_purchase_data TYPE zssmm_input_020_purchase,
        lwa_mrp_data      TYPE zssmm_input_020_mrp,
        lwa_account_data  TYPE zssmm_input_020_account,
        lt_mara           TYPE TABLE OF mara,
        lwa_mara          TYPE mara.

  DATA: lv_line(10),
        lv_percent(6),
        lv_text(40),
        lv_lines TYPE n LENGTH 5.

  DATA: ls_headdata LIKE bapimathead,
        ls_mara     LIKE bapi_mara,
        ls_marax    LIKE bapi_marax,
        ls_marc     LIKE bapi_marc,
        ls_marcx    LIKE bapi_marcx,
*LS_FORECASTPARAMETERS  LIKE TABLE OF BAPI_MPOP,
*LS_FORECASTPARAMETERSX  LIKE TABLE OF  BAPI_MPOPX,
*LS_PLANNINGDATA  LIKE TABLE OF BAPI_MPGD,
*LS_PLANNINGDATAX  LIKE TABLE OF  BAPI_MPGDX,
*        ls_storagelocationdata  LIKE TABLE OF bapi_mard,
*        ls_storagelocationdatax LIKE TABLE OF bapi_mardx,
        ls_mbew     LIKE bapi_mbew,
        ls_mbewx    LIKE bapi_mbewx,
*LS_WAREHOUSENUMBERDATA  LIKE TABLE OF  BAPI_MLGN,
*LS_WAREHOUSENUMBERDATAX  LIKE TABLE OF BAPI_MLGNX,
        ls_mvke     LIKE bapi_mvke,
        ls_mvkex    LIKE bapi_mvkex,
        ls_mlan     TYPE bapi_mlan,
        lt_mlan     TYPE TABLE OF bapi_mlan,
        ls_marm     TYPE bapi_marm,
        ls_marmx    TYPE bapi_marmx,
*        lt_makt               LIKE TABLE OF bapi_makt WITH HEADER LINE,
        lt_marm     LIKE TABLE OF bapi_marm WITH HEADER LINE,
        lt_marmx    LIKE TABLE OF bapi_marmx WITH HEADER LINE,
*        lt_taxclassifications LIKE TABLE OF bapi_mlan WITH HEADER LINE,
*        lt_extensionin        LIKE TABLE OF bapiparex WITH HEADER LINE,
*        lt_extensioninx       LIKE TABLE OF bapiparexx WITH HEADER LINE,
        ls_return   LIKE  bapiret2.

  DATA:lt_longtext TYPE TABLE OF bapi_mltx,
       ls_longtext TYPE bapi_mltx.

  DATA:gv_status TYPE c.    "总状态,成功就是全部成功

  DEFINE de_null_check.
    IF &1 IS INITIAL.
      lwa_output-matnr   = &2.
      lwa_output-type    = 'E'.
      lwa_output-message = &3 && '为必填!'.
      APPEND lwa_output TO ls_output-messagelist.
    ENDIF.
  END-OF-DEFINITION.

  DEFINE de_error.
    IF &1 IS INITIAL.
      lwa_output-matnr   = &2.
      lwa_output-type    = 'E'.
      lwa_output-message = &3 && '为错误!'.
      APPEND lwa_output TO ls_output-messagelist.
      gv_status = 'E'.
    ENDIF.
  END-OF-DEFINITION.

  IF i_input IS NOT INITIAL.
    CALL FUNCTION 'Z_FMBC_JSONTOABAP2'
      EXPORTING
        i_json = i_input
      IMPORTING
        e_data = ls_input.
  ENDIF.

  IF ls_input IS INITIAL.
*    PERFORM frm_set_msg TABLES ls_output-messagelist USING 'E' '00' '001' '请检查JSON结构与SAP ABAP结构 是否一致!'.
    lwa_output-type    = 'E'.
    lwa_output-message = '请检查JSON结构与SAP ABAP结构 是否一致!'.
    APPEND lwa_output TO ls_output-messagelist.
    gv_status = 'E'.
    PERFORM frm_write_log_new USING  'MM0020' ls_output i_data_gd i_input e_output 'E'.
    EXIT.
  ENDIF.

  lt_base_data    =  ls_input-base_data   .
  lt_sales_data    = ls_input-sales_data   .
  lt_purchase_data = ls_input-purchase_data.
  lt_mrp_data      = ls_input-mrp_data     .
  lt_account_data  = ls_input-account_data .

  gv_status = 'S'.

  LOOP AT lt_sales_data ASSIGNING FIELD-SYMBOL(<fs_sales_data>).
    lwa_sales_data = <fs_sales_data>.
*    lwa_sales_data-matnr = |{ lwa_sales_data-matnr ALPHA = IN }|.
    CALL FUNCTION 'Z_FMBC_CONVERT_MATNR_IN'
      EXPORTING
        i_matnr = lwa_sales_data-matnr
      IMPORTING
        e_matnr = lwa_sales_data-matnr.
    <fs_sales_data>-matnr = lwa_sales_data-matnr.

    SELECT SINGLE *
      FROM mara
      WHERE matnr = @lwa_sales_data-matnr
      INTO @lwa_mara.
    IF sy-subrc NE 0.
      lwa_output-type    = 'E'.
      gv_status = 'E'.
      lwa_output-message = '物料编码' && lwa_sales_data-matnr && '不存在!'.
      APPEND lwa_output TO ls_output-messagelist.
    ELSE.
      APPEND lwa_mara TO lt_mara.
    ENDIF.

    de_null_check: lwa_sales_data-vkorg       lwa_sales_data-matnr 'VKORG(销售组织)',
                   lwa_sales_data-vtweg       lwa_sales_data-matnr 'VTWEG(分销渠道)',
*                   lwa_sales_data-prodh       lwa_sales_data-matnr 'PRODH(产品应用领域)',
                   lwa_sales_data-taxkm       lwa_sales_data-matnr 'TAXKM(物料的税分类)',
                   lwa_sales_data-ktgrm       lwa_sales_data-matnr 'KTGRM(物料的科目分配组)',
                   lwa_sales_data-zrequest_id lwa_sales_data-matnr 'ZREQUEST_ID(OA流程唯一码)',
                   lwa_sales_data-zlcbh       lwa_sales_data-matnr 'ZLCBH(OA流程编号)'.

    IF lwa_sales_data-vkorg IS NOT INITIAL.
      SELECT SINGLE *
        FROM tvkot
        WHERE vkorg = @lwa_sales_data-vkorg
          AND spras = '1'
        INTO @DATA(lwa_tvkot).
      IF sy-subrc NE 0.
        de_error: lwa_sales_data-vkorg lwa_sales_data-matnr 'VKORG(销售组织)'.
      ENDIF.
    ENDIF.

    IF lwa_sales_data-vtweg IS NOT INITIAL.
      SELECT SINGLE *
        FROM tvtwt
        WHERE vtweg = @lwa_sales_data-vtweg
          AND spras = '1'
        INTO @DATA(lwa_tvtwt).
      IF sy-subrc NE 0.
        de_error: lwa_sales_data-vtweg lwa_sales_data-matnr 'VTWEG(分销渠道)'.
      ENDIF.
    ENDIF.

    IF lwa_sales_data-prodh IS NOT INITIAL.
      SELECT SINGLE *
        FROM t179t
        WHERE prodh = @lwa_sales_data-prodh
          AND spras = '1'
        INTO @DATA(lwa_t179t).
      IF sy-subrc NE 0.
*        de_error: lwa_sales_data-prodh lwa_sales_data-matnr 'PRODH(产品应用领域)'.  “changed by dq 20250213 取消产品应用领域必填校验
      ENDIF.
    ENDIF.

    IF lwa_sales_data-dwerk IS NOT INITIAL.
      SELECT SINGLE *
        FROM t001w
        WHERE werks = @lwa_sales_data-dwerk
        INTO @DATA(lwa_t001w).

      IF sy-subrc NE 0.
        de_error: lwa_sales_data-dwerk  lwa_sales_data-matnr 'DWERK(交货工厂)'.
      ENDIF.
    ENDIF.

    IF lwa_sales_data-taxkm IS NOT INITIAL.
      SELECT SINGLE *
        FROM tskmt
        WHERE taxkm = @lwa_sales_data-taxkm
          AND tatyp = 'MWST'
        INTO @DATA(lwa_tskmt).

      IF sy-subrc NE 0.
        de_error: lwa_sales_data-taxkm  lwa_sales_data-matnr 'TAXKM(税分类)'.
      ENDIF.
    ENDIF.

    IF lwa_sales_data-ktgrm IS NOT INITIAL.
      SELECT SINGLE *
        FROM tvkmt
        WHERE ktgrm = @lwa_sales_data-ktgrm
        INTO @DATA(lwa_tvkmt).

      IF sy-subrc NE 0.
        de_error: lwa_sales_data-ktgrm  lwa_sales_data-matnr 'KTGRM(科目分配组)'.
      ENDIF.
    ENDIF.

    IF lwa_sales_data-vmsta IS NOT INITIAL.
      SELECT SINGLE *
        FROM tvmst
        WHERE vmsta = @lwa_sales_data-vmsta
        INTO @DATA(lwa_tvmst).

      IF sy-subrc NE 0.
        de_error: lwa_sales_data-vmsta  lwa_sales_data-matnr 'VMSTA(指定分销链的物料状态)'.
      ENDIF.
    ENDIF.
  ENDLOOP.

  LOOP AT lt_purchase_data ASSIGNING FIELD-SYMBOL(<fs_purchase_data>).
    lwa_purchase_data = <fs_purchase_data>.
*    lwa_purchase_data-matnr = |{ lwa_purchase_data-matnr ALPHA = IN }|.
    CALL FUNCTION 'Z_FMBC_CONVERT_MATNR_IN'
      EXPORTING
        i_matnr = lwa_purchase_data-matnr
      IMPORTING
        e_matnr = lwa_purchase_data-matnr.
    <fs_purchase_data>-matnr = lwa_purchase_data-matnr.

    SELECT SINGLE *
      FROM mara
      WHERE matnr = @lwa_purchase_data-matnr
      INTO @lwa_mara.
    IF sy-subrc NE 0.
      lwa_output-type    = 'E'.
      gv_status = 'E'.

http://www.dtcms.com/a/492642.html

相关文章:

  • 美术培训学校网站模板万州房产网站建设
  • 安徽公共资源交易中心招标网谷歌搜索广告优化
  • 北京网站建设技术部html编辑器在哪里设置
  • 昆明做个人网站做logo好的网站
  • k8s 持久化存储方案-PVC
  • 【雅思播客024】Investing in Emerging Markets
  • 江阴建设局网站招考查派网站建设
  • 国内做网站建设知名的公司海口网站制作网站
  • 导购网站如何做国外推广怎么做
  • 四川做网站优化价格国内做网站的大公司有哪些
  • Day22 回溯算法_part01
  • MySQL 数据库优化设计:优化原理和数据库表设计技巧
  • 技术观察:RPA到智能体转型的三大技术陷阱与路径选择
  • 2023网站推广入口中国室内设计师资格证
  • 有没有专业做艺术品的网站潍坊潍微贷是哪家网站建设的
  • 网站关键词多少个最好潜江资讯网二手车
  • 信号数据(eeg,ecg,心率等)- 深度学习
  • 社团网站建设小公司做网站还是微博
  • 第8章 基于表格型方法的规划和学习(1) 模型、规划与学习和Dyna-Q
  • 做网站的前景如何营销策略国内外文献综述
  • 购物型网站怎么建立wordpress证优客
  • 冷门行业做网站的优势o2o网站建设多少钱
  • 网站后台的建设建设网站是做什么
  • [嵌入式系统-124]:GPU软件运行平台的三个支柱:OpenGL、OpenCL 、CUDA
  • 网站信息抽查评估杭州专业seo服务公司
  • 网站备案号查询网址免费空间申请哪个好
  • 洛阳网站建设睿翼网络入驻洛阳做钓鱼网站
  • 株洲网站建设平台免费网站空间 国外
  • 负面信息网站做特价的网站百度
  • 盲盒app怎么提升用户访问速度