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

SAP SD 价格主数据创建接口分享

一、接口逻辑

1)输入参数和输出参数

2)业务逻辑

二、接口代码

DATA lt_bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE. "bdc执行内表
DATA lt_msgtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE. "bdc返回信息表

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

  DATA: lv_status TYPE c VALUE IS INITIAL.

  CALL FUNCTION 'ZFM_BREAK_POINT'  .


  CLEAR: gv_input_008,e_output.


  IF i_input IS NOT INITIAL.
    CALL FUNCTION 'Z_FMBC_JSONTOABAP'
      EXPORTING
        i_json = i_input
      IMPORTING
        e_data = gv_input_008.
  ENDIF.


  IF gv_input_008 IS INITIAL.
    PERFORM frm_set_msg TABLES gv_output_008 USING 'E' '00' '001' '请检查JSON结构与SAP ABAP结构 是否一致!'.
    PERFORM frm_write_log_new  USING 'SD0005'
                                     gv_output_008
                                     i_data_gd
                                     i_input
                                     e_output
                                     'E'.
    EXIT.
  ENDIF.

  gt_price[] = gv_input_008-price.
  gt_discount[] = gv_input_008-discount.

  IF gt_price[] IS NOT INITIAL AND gt_discount[] IS NOT INITIAL.

    PERFORM frm_set_msg TABLES gv_output_008 USING 'E' '00' '001' '销售价格和销售折扣不能同时维护!'.
    PERFORM frm_write_log_new  USING 'SD0005'
                                      gv_output_008
                                      i_data_gd
                                      i_input
                                      e_output
                                      'E'.
    EXIT.

  ELSEIF gt_price[] IS NOT INITIAL.
    "调整前导零
    LOOP AT gt_price INTO gs_price.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = gs_price-kunnr
        IMPORTING
          output = gs_price-kunnr.

      IF gs_price-vkorg = '8600'.
        gs_price-matnr = gs_price-matnr && 'S'.
      ENDIF.

      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' "补18位前导零
        EXPORTING
          input  = gs_price-matnr
        IMPORTING
          output = gs_price-matnr.

      MODIFY gt_price FROM gs_price.
    ENDLOOP.

    READ TABLE gt_price INTO gs_price WITH KEY zflag = 'C'.
    IF sy-subrc EQ 0.
      READ TABLE gt_price INTO gs_price WITH KEY zflag = 'I'.
      IF sy-subrc EQ 0.
        PERFORM frm_set_msg TABLES gv_output_008 USING 'E' '00' '001' '不可以同时检查和创建!'.
        PERFORM frm_write_log_new  USING 'SD0005'
                                   gv_output_008
                                   i_data_gd
                                   i_input
                                   e_output
                                   'E'.
        EXIT.
      ENDIF.
    ENDIF.
    "检查销售价格信息
    PERFORM frm_price_check TABLES gv_output_008 gt_price CHANGING lv_status.

    IF lv_status = 'E'.
      PERFORM frm_write_log_new  USING 'SD0005'
                                       gv_output_008
                                       i_data_gd
                                       i_input
                                       e_output
                                       'E'.
      EXIT.
    ELSE.
      READ TABLE gt_price INTO gs_price WITH KEY zflag = 'C'.
      IF sy-subrc EQ 0. "仅校验
        PERFORM frm_set_msg TABLES gv_output_008 USING 'S' '00' '001' '销售价格校验通过!'.
        PERFORM frm_write_log_new  USING 'SD0005'
                                   gv_output_008
                                   i_data_gd
                                   i_input
                                   e_output
                                   'S'.
        EXIT.
      ELSE. "创建

        "用BAPI创建
        PERFORM frm_create_price TABLES gt_price gv_output_008 CHANGING lv_status.

        IF lv_status = 'E'.
          PERFORM frm_write_log_new  USING 'SD0005'
                                 gv_output_008
                                 i_data_gd
                                 i_input
                                 e_output
                                 'E'.
          EXIT.
        ELSE.
          PERFORM frm_write_log_new  USING 'SD0005'
                               gv_output_008
                               i_data_gd
                               i_input
                               e_output
                               'S'.
          EXIT.

        ENDIF.

      ENDIF.  "校验or创建

    ENDIF.  "检查表数据

  ELSEIF gt_discount[] IS NOT INITIAL.
    "调整前导零
  &nb

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

相关文章:

  • huggingface模型下载到本地
  • 有没有找人做标书的网站国外最开放的浏览器是哪个
  • react虚拟滚动
  • 网站404怎么做郑州短视频拍摄制作公司
  • 国外设计作品网站深圳龙岗区地图
  • 网站开发属于软件开发服务吗临沂seo公司稳健火星
  • windows安装rust
  • 图神经网络分享系列-GAT(GRAPH ATTENTION NETWORKS) (一)
  • C语言:整数转字符串(递归实现)
  • fpga芯片挂在线成功,但是固化程序失败的可能原因有哪些?
  • HarmonyOs鸿蒙开发,学生信息管理
  • Android实战进阶 - 单点登录与系统拦截
  • 简要说明网站建设的步骤最权威的做网站优化价格
  • 环境设计网站推荐北京战略咨询公司
  • golang学习笔记:标准库sort
  • VVIC 关键字搜索接口开发:快时尚场景下的智能分词与爆款优先排序实现
  • 数据结构——平衡二叉树
  • 基于Qt实现百度地图路径规划功能
  • 电力电子技术 第六章——磁元件模型
  • Qt+Qml客户端和Python服务端的网络通信原型
  • 个人音乐类网站服务器租借汉滨网站建设
  • Python“魔术方法”详解:self 与 other 的角色与交互
  • 每日SQL练习 -- 24年阿里(医院门诊复诊率与抗生素用药占比统计)
  • Vue项目中资源引入方式详解
  • 单页网站设计欣赏沪深300指数
  • 跨境一件代发平台温州seo关键词优化
  • mvc5网站开发网站长尾关键词排名软件
  • 阿里云渠道商:如何建立阿里云的权限模型?
  • 网站开发 只要凡科精选app
  • 玉溪市网站建设推广移动通信网站建设