二维码

[BAPI] VA02修改销售订单BAPI_SALESORDER_CHANGE

Twilight发表于 2018-09-19 16:07Twilight 最后回复于 2018-09-19 16:07 [复制链接] 6043 0

程序代码:
  1. FUNCTION zsdfm001_update.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口
  4. *"  IMPORTING
  5. *"     VALUE(I_HEADER) TYPE  ZSDS106 OPTIONAL
  6. *"  EXPORTING
  7. *"     VALUE(E_MESSAGE) TYPE  ZOTS001
  8. *"     VALUE(E_STONR) TYPE  J_STONR
  9. *"  TABLES
  10. *"      T_VBPA STRUCTURE  ZSDS109 OPTIONAL
  11. *"      T_ITEM STRUCTURE  ZSDS107 OPTIONAL
  12. *"      T_KONV STRUCTURE  ZSDS108 OPTIONAL
  13. *"      T_KONVT STRUCTURE  ZSDS108 OPTIONAL
  14. *"      T_COBRB STRUCTURE  ZSDS187 OPTIONAL
  15. *"----------------------------------------------------------------------
  16.   DATA:ls_logic_switch TYPE bapisdls.
  17.   DATA:gwa_bapisdh1   TYPE bapisdhd1. "抬头
  18.   DATA:gwa_bapisdh1x  TYPE bapisdhd1x. "抬头 确认
  19.   DATA:gwa_partnerchanges TYPE bapiparnrc. "合作伙伴更改
  20.   DATA:git_partnerchanges TYPE TABLE OF bapiparnrc.
  21.   DATA:gwa_bapisditm  TYPE bapisditm.    "行项目
  22.   DATA:git_bapisditm  TYPE TABLE OF bapisditm.
  23.   DATA:gwa_bapisditmx TYPE bapisditmx.   "行项目 确认
  24.   DATA:git_bapisditmx TYPE TABLE OF bapisditmx.
  25.   DATA:gwa_bapischdl  TYPE bapischdl.     "计划行
  26.   DATA:git_bapischdl  TYPE TABLE OF bapischdl.      "计划行
  27.   DATA:gwa_bapischdlx TYPE bapischdlx.   "计划行
  28.   DATA:git_bapischdlx TYPE TABLE OF bapischdlx.    "计划行
  29.   DATA:gwa_bapicond   TYPE bapicond.       "价格
  30.   DATA:git_bapicond   TYPE TABLE OF bapicond.
  31.   DATA:gwa_bapicondx  TYPE bapicondx.
  32.   DATA:git_bapicondx  TYPE TABLE OF bapicondx.
  33.   DATA:git_order_text TYPE TABLE OF bapisdtext."长文本
  34.   DATA:gwa_bapiret2 TYPE bapiret2.
  35.   DATA:git_bapiret2 TYPE TABLE OF bapiret2.
  36.   DATA:lt_konv_t    TYPE TABLE OF zsds108.

  37.   DATA:ls_item  TYPE zsds107.
  38.   DATA:ls_konv  TYPE zsds108.
  39.   DATA:lv_stonr TYPE j_stonr.
  40.   DATA:lv_objnr TYPE jsto-objnr.
  41.   DATA:lv_kALVg TYPE tvak-kalvg.
  42.   DATA:lv_kalks TYPE knvv-kalks.
  43.   DATA:lv_kalsm TYPE t683s-kalsm.
  44.   DATA:lv_kunnr TYPE vbak-kunnr.
  45.   DATA ls_zots001 TYPE zots001.
  46.   CHECK i_header-vbeln IS NOT INITIAL.
  47.   PERFORM frm_inputsap_data CHANGING i_header-vbeln.

  48.   lt_konv_t[] = t_konv[].
  49.   APPEND LINES OF t_konvt TO lt_konv_t.

  50.   LOOP AT lt_konv_t ASSIGNING FIELD-SYMBOL(<fs_konv_t>).
  51.     IF <fs_konv_t>-kbetr IS NOT INITIAL AND <fs_konv_t>-waers IS INITIAL.
  52.       e_message-type = 'E'.
  53.       e_message-message = '定价条件' && t_konv-kschl && '缺少货币单位'.
  54.       EXIT.
  55.     ENDIF.
  56.   ENDLOOP.

  57.   READ TABLE lt_konv_t TRANSPORTING NO FIELDS WITH KEY mark = 'D'.
  58.   IF sy-subrc = 0.
  59.     READ TABLE lt_konv_t TRANSPORTING NO FIELDS WITH KEY mark = 'I'.
  60.     IF sy-subrc = 0.
  61.       e_message-type = 'E'.
  62.       e_message-message = '价格中新增(I)和删除(D)不能同时操作'.
  63.       EXIT.
  64.     ENDIF.
  65.   ENDIF.

  66.   CHECK  e_message-type NE 'E'.
  67. *-->抬头
  68.   gwa_bapisdh1-purch_no_c = i_header-bstkd."采购订单编号
  69.   CONCATENATE i_header-date+0(4) i_header-date+5(2) i_header-date+8(2) INTO gwa_bapisdh1-purch_date."采购订单日期
  70.   gwa_bapisdh1-pmnttrms   = i_header-zterm."付款条件
  71.   gwa_bapisdh1-ord_reason = i_header-augru."订单原因
  72. *  gwa_bapisdh1-costcenter = i_header-kostl."成本中心
  73.   gwa_bapisdh1-mn_invoice = i_header-mrnkz."人工发票维护
  74.   gwa_bapisdh1-collect_no = i_header-submi."汇总数
  75.   gwa_bapisdh1-po_meth_s  = i_header-bsark_e."采购订单类型
  76.   gwa_bapisdh1-purch_no_s = i_header-bstkd_e.
  77.   gwa_bapisdh1-po_supplem = i_header-bstzd.
  78.   gwa_bapisdh1-sales_grp  = i_header-vkgrp."销售组
  79.   gwa_bapisdh1-sales_off  = i_header-vkbur."销售办公室
  80.   gwa_bapisdh1-cust_group = i_header-kdgrp."客户组
  81.   gwa_bapisdh1-cust_grp1  = i_header-kvgr1."客户组1
  82.   gwa_bapisdh1-cust_grp3  = i_header-kvgr3."客户组3
  83.   gwa_bapisdh1-name       = i_header-name ."来源单号
  84.   gwa_bapisdh1-ship_type  = i_header-vsart.
  85.   gwa_bapisdh1-ref_1_s    = i_header-ihrez_e.
  86.   gwa_bapisdh1-ref_1      = i_header-ihrez."您的参考
  87.   gwa_bapisdh1-taxdst_cty = i_header-stceg_l."目的地国
  88.   gwa_bapisdh1-currency   = i_header-waers."币种
  89.   gwa_bapisdh1-version   = i_header-vsnmr_v."版本

  90.   CLEAR gwa_bapisdh1x.
  91.   gwa_bapisdh1x-updateflag = 'U'."更新标识
  92.   gwa_bapisdh1x-purch_no_c = 'X'."采购订单编号
  93.   gwa_bapisdh1-compl_dlv   = i_header-compl_dlv."全部交货
  94.   gwa_bapisdh1x-compl_dlv  = 'X'."全部交货
  95.   gwa_bapisdh1x-pmnttrms   = 'X'."付款条件
  96.   gwa_bapisdh1x-ord_reason = 'X'."订单原因
  97.   gwa_bapisdh1x-purch_no_s = 'X'.
  98.   gwa_bapisdh1x-po_meth_s  = 'X'."采购订单类型
  99.   gwa_bapisdh1x-po_supplem = 'X'."采购单编号补充
  100.   gwa_bapisdh1x-sales_grp  = 'X'."销售组
  101.   gwa_bapisdh1x-sales_off  = 'X'."销售办公室
  102.   gwa_bapisdh1x-ship_type  = 'X'.
  103.   gwa_bapisdh1x-cust_group = 'X'."客户组
  104.   gwa_bapisdh1x-cust_grp1  = 'X'."客户组1
  105.   gwa_bapisdh1x-cust_grp3  = 'X'."客户组3
  106.   gwa_bapisdh1-ref_1_s     = 'X'.
  107.   gwa_bapisdh1x-ref_1      = 'X'."您的参考
  108.   gwa_bapisdh1x-mn_invoice = 'X'.
  109.   gwa_bapisdh1x-collect_no = 'X'.
  110.   gwa_bapisdh1x-version    = 'X'."版本
  111.   IF i_header-waers IS NOT INITIAL.
  112.     gwa_bapisdh1x-currency   = 'X'."币种
  113.   ENDIF.

  114.   IF i_header-date IS NOT INITIAL.
  115.     gwa_bapisdh1x-purch_date = 'X'."采购订单日期
  116.   ENDIF.
  117.   IF gwa_bapisdh1-name IS NOT INITIAL.
  118.     gwa_bapisdh1x-name = 'X'.
  119.   ENDIF.
  120. *  IF gwa_bapisdh1-costcenter IS NOT INITIAL.
  121. *    gwa_bapisdh1x-costcenter = 'X'.
  122. *  ENDIF.
  123.   IF gwa_bapisdh1-taxdst_cty IS NOT INITIAL.
  124.     gwa_bapisdh1x-taxdst_cty = 'X'.
  125.   ENDIF.

  126.   SELECT vbeln,
  127.          posnr,
  128.          parvw,
  129.          kunnr,
  130.          lifnr,
  131.          pernr
  132.   FROM vbpa
  133.   WHERE vbeln = @i_header-vbeln AND posnr = '000000'
  134.   INTO TABLE @DATA(lt_vbpa).

  135. *-->合作伙伴
  136.   LOOP AT t_vbpa.
  137.     CLEAR:gwa_partnerchanges.
  138.     PERFORM frm_inputsap_data CHANGING t_vbpa-vbeln.
  139.     gwa_partnerchanges-document   = t_vbpa-vbeln.
  140.     gwa_partnerchanges-itm_number = '000000'.
  141.     gwa_partnerchanges-updateflag = t_vbpa-mark.
  142.     gwa_partnerchanges-partn_role = t_vbpa-parvw.

  143.     READ TABLE lt_vbpa INTO DATA(ls_vbpa) WITH KEY parvw = t_vbpa-parvw.
  144.     IF sy-subrc = 0.
  145.       IF ls_vbpa-pernr IS NOT INITIAL.
  146.         gwa_partnerchanges-p_numb_old = ls_vbpa-pernr.
  147.       ELSE.
  148.         gwa_partnerchanges-p_numb_old = ls_vbpa-kunnr.
  149.       ENDIF.
  150.     ENDIF.
  151.     gwa_partnerchanges-p_numb_new = t_vbpa-kunn2.
  152.     APPEND gwa_partnerchanges TO git_partnerchanges.
  153.   ENDLOOP.

  154. *-->抬头长文本
  155.   IF i_header-head1 IS NOT INITIAL.
  156.     PERFORM frm_order_text TABLES git_order_text USING 'Z001' i_header-vbeln space i_header-head1.
  157.   ENDIF.
  158.   IF i_header-head2 IS NOT INITIAL.
  159.     PERFORM frm_order_text TABLES git_order_text USING 'Z002' i_header-vbeln space i_header-head2.
  160.   ENDIF.

  161. *-->行项目
  162.   SELECT vbeln,
  163.          posnr,
  164.          etenr,
  165.          edatu
  166.     FROM vbep
  167.     WHERE vbeln = @i_header-vbeln
  168.     INTO TABLE @DATA(lt_vbep).

  169.   DELETE t_item WHERE pstyv = 'ZTTN'.
  170.   SORT lt_vbep BY vbeln posnr etenr.
  171.   LOOP AT t_item INTO ls_item.
  172.     PERFORM frm_inputsap_data CHANGING ls_item-vbeln.
  173.     PERFORM frm_chang_in      CHANGING ls_item-matnr.
  174.     PERFORM frm_inputsap_data CHANGING ls_item-posnr.
  175.     PERFORM frm_inputsap_data CHANGING ls_item-posnv.
  176.     PERFORM frm_inputsap_data CHANGING ls_item-uepos.
  177.     PERFORM frm_input_unit    CHANGING ls_item-vrkme. "销售单位

  178.     CLEAR gwa_bapisditm.
  179.     gwa_bapisditm-itm_number = ls_item-posnr."行项目号
  180.     gwa_bapisditm-material   = ls_item-matnr."物料编码
  181. *    gwa_bapisditm-target_qty = ls_item-kwmeng."数量
  182.     gwa_bapisditm-cust_mat35 = ls_item-kdmat."客户物料号
  183.     gwa_bapisditm-hg_lv_item = ls_item-uepos."上层项目
  184.     gwa_bapisditm-reason_rej = ls_item-abgru."拒绝原因

  185.     IF ls_item-werks IS NOT INITIAL.         "工厂
  186.       gwa_bapisditm-plant = ls_item-werks.
  187.     ELSE.
  188.       gwa_bapisditm-plant = i_header-werks.
  189.     ENDIF.
  190.     IF ls_item-lgort IS NOT INITIAL.
  191.       gwa_bapisditm-store_loc  = ls_item-lgort."库位
  192.     ENDIF.
  193.     IF ls_item-pstyv IS NOT INITIAL.
  194.       gwa_bapisditm-item_categ = ls_item-pstyv."项目类别
  195.     ENDIF.
  196.     IF ls_item-vrkme IS NOT INITIAL.
  197.       gwa_bapisditm-sales_unit = ls_item-vrkme.
  198.     ENDIF.
  199.     APPEND gwa_bapisditm TO git_bapisditm.

  200.     CLEAR gwa_bapisditmx.
  201.     gwa_bapisditmx-itm_number = ls_item-posnr. "行项目号
  202.     gwa_bapisditmx-updateflag = ls_item-mark .
  203.     gwa_bapisditmx-material   = 'X'.           "物料编码
  204.     gwa_bapisditmx-cust_mat35 = 'X'.           "客户物料号
  205.     gwa_bapisditmx-reason_rej = 'X'.           "拒绝原因
  206.     IF ls_item-uepos IS NOT INITIAL.
  207.       gwa_bapisditmx-hg_lv_item = 'X'.           "上层项目
  208.     ENDIF.
  209.     IF gwa_bapisditm-plant IS NOT INITIAL.      "工厂
  210.       gwa_bapisditmx-plant      = 'X'.
  211.     ENDIF.
  212.     IF gwa_bapisditm-store_loc IS NOT INITIAL. "库位
  213.       gwa_bapisditmx-store_loc = 'X'.
  214.     ENDIF .
  215.     IF  gwa_bapisditm-item_categ IS NOT INITIAL.  "项目类别
  216.       gwa_bapisditmx-item_categ = 'X'.
  217.     ENDIF.
  218.     IF ls_item-vrkme IS NOT INITIAL.
  219.       gwa_bapisditmx-sales_unit = 'X'.
  220.     ENDIF.
  221.     APPEND gwa_bapisditmx TO git_bapisditmx.

  222. **-->计划行.
  223.     gwa_bapischdl-itm_number = ls_item-posnr.
  224.     gwa_bapischdl-sched_line = 1.
  225.     READ TABLE lt_vbep ASSIGNING FIELD-SYMBOL(<fs_vbep>) WITH KEY posnr = ls_item-posnr.
  226.     IF sy-subrc = 0.
  227.       gwa_bapischdl-req_date = <fs_vbep>-edatu.
  228.     ELSE.
  229.       IF ls_item-date IS NOT INITIAL.
  230.         CONCATENATE ls_item-date+0(4) ls_item-date+5(2) ls_item-date+8(2) INTO gwa_bapischdl-req_date.
  231.       ELSEIF gwa_bapisdh1-purch_date IS NOT INITIAL.
  232.         gwa_bapischdl-req_date =  gwa_bapisdh1-purch_date.
  233.       ELSE.
  234.         gwa_bapischdl-req_date =  sy-datum .
  235.       ENDIF.
  236.     ENDIF.
  237.     gwa_bapischdl-req_qty = ls_item-kwmeng.
  238.     APPEND gwa_bapischdl TO git_bapischdl.

  239.     CLEAR gwa_bapischdlx.
  240.     gwa_bapischdlx-itm_number = ls_item-posnr.          "行项目号
  241.     gwa_bapischdlx-sched_line = 1.
  242.     gwa_bapischdlx-updateflag = ls_item-mark.           " U,D,I
  243.     gwa_bapischdlx-req_date   = 'X'.                    "首个交货日期(计划行)
  244.     gwa_bapischdlx-req_qty    = 'X'.                    "数量
  245.     APPEND gwa_bapischdlx TO git_bapischdlx.

  246. *-->行项目长文本
  247.     IF ls_item-beiz1 IS NOT INITIAL.
  248.       PERFORM frm_order_text TABLES git_order_text USING 'Z001' ls_item-vbeln ls_item-posnr ls_item-beiz1.
  249.     ENDIF.
  250.   ENDLOOP.

  251. *-->定价
  252.   DATA:lv_knumv      TYPE vbak-knumv,
  253.        lv_first      TYPE char1,
  254.        lv_cond_st_no TYPE bapicond-cond_st_no.
  255.   DATA:BEGIN OF lt_konv OCCURS 0,
  256.          knumv TYPE konv-knumv,
  257.          kposn TYPE konv-kposn,
  258.          stunr TYPE konv-stunr,
  259.          zaehk TYPE konv-zaehk,
  260.          kschl TYPE konv-kschl,
  261.        END OF lt_konv.

  262.   IF t_konvt[] IS NOT INITIAL.
  263.     READ TABLE t_konv TRANSPORTING NO FIELDS WITH KEY kschl = 'ZZ01'.
  264.     IF sy-subrc = 0.
  265.       DELETE  t_konvt WHERE kschl = 'ZZ01'.
  266.     ENDIF.
  267.   ENDIF.
  268.   APPEND LINES OF t_konvt TO t_konv.
  269.   DELETE t_konv WHERE kschl = 'ZA00'.  "ZA00 国内销售折扣  自动计算出来 不需要传入
  270. *  DELETE t_konv WHERE mark = 'U' AND kbetr IS INITIAL.  "价格为零不需要更新

  271.   SELECT SINGLE knumv INTO lv_knumv FROM vbak WHERE vbeln = i_header-vbeln.
  272.   IF sy-subrc = 0.
  273.     SELECT knumv
  274.            kposn
  275.            stunr
  276.            zaehk
  277.            kschl
  278.       INTO TABLE lt_konv
  279.       FROM v_konv_cds
  280.       WHERE knumv = lv_knumv.
  281.     SORT lt_konv BY knumv        kposn        stunr        zaehk.
  282.   ENDIF.

  283.   READ TABLE t_vbpa ASSIGNING FIELD-SYMBOL(<fs_vbpa>) WITH KEY parvw = 'AG'. "售达方
  284.   IF sy-subrc = 0.
  285.     lv_kunnr = <fs_vbpa>-kunn2.
  286.   ENDIF.

  287.   SELECT SINGLE kalvg INTO lv_kalvg FROM tvak  WHERE auart = i_header-auart.
  288.   SELECT SINGLE kalks INTO lv_kalks FROM knvv  WHERE kunnr = lv_kunnr AND vkorg = i_header-vkorg AND vtweg = i_header-vtweg AND spart = i_header-spart.
  289.   SELECT SINGLE kalsm INTO lv_kalsm FROM t683v WHERE vkorg = i_header-vkorg AND vtweg = i_header-vtweg AND spart = i_header-spart AND kalvg = lv_kalvg AND kalks = lv_kalks.

  290.   LOOP AT t_konv INTO ls_konv.
  291.     PERFORM frm_inputsap_data CHANGING ls_konv-posnr.
  292.     CLEAR:gwa_bapicond,gwa_bapicondx.

  293.     READ TABLE lt_konv WITH KEY kposn = ls_konv-posnr kschl = ls_konv-kschl.
  294.     IF sy-subrc = 0.
  295.       CASE ls_konv-mark.
  296.         WHEN 'U'.
  297.           gwa_bapicond-itm_number = lt_konv-kposn. "行项目号
  298.           gwa_bapicond-cond_st_no = lt_konv-stunr. "步骤编号
  299.           gwa_bapicond-cond_count = lt_konv-zaehk. "条件计数器
  300.           gwa_bapicond-cond_type  = lt_konv-kschl. "定价条件
  301.           gwa_bapicond-cond_value = ls_konv-kbetr.
  302.           gwa_bapicond-currency   = ls_konv-waers. "货币码
  303.           APPEND gwa_bapicond  TO git_bapicond.

  304.           gwa_bapicondx-itm_number = ls_konv-posnr. "行项目号
  305.           gwa_bapicondx-cond_st_no = lt_konv-stunr. "步骤编号
  306.           gwa_bapicondx-cond_count = lt_konv-zaehk. "条件计数器
  307.           gwa_bapicondx-cond_type  = lt_konv-kschl. "定价条件
  308.           gwa_bapicondx-updateflag = ls_konv-mark.  "I \U \D
  309.           gwa_bapicondx-cond_value = 'X'.
  310.           IF ls_konv-waers IS NOT INITIAL.
  311.             gwa_bapicondx-currency   = 'X'.
  312.           ENDIF.
  313.           APPEND gwa_bapicondx TO git_bapicondx.
  314.         WHEN 'D'.
  315.           gwa_bapicond-itm_number = lt_konv-kposn. "行项目号
  316.           gwa_bapicond-cond_st_no = lt_konv-stunr. "步骤编号
  317.           gwa_bapicond-cond_count = lt_konv-zaehk. "条件计数器
  318.           gwa_bapicond-cond_type  = lt_konv-kschl. "定价条件
  319.           APPEND gwa_bapicond  TO git_bapicond.

  320.           gwa_bapicondx-itm_number = ls_konv-posnr. "行项目号
  321.           gwa_bapicondx-cond_st_no = lt_konv-stunr. "步骤编号
  322.           gwa_bapicondx-cond_count = lt_konv-zaehk. "条件计数器
  323.           gwa_bapicondx-cond_type  = lt_konv-kschl. "定价条件
  324.           gwa_bapicondx-updateflag = ls_konv-mark.  "I \U \D
  325.           APPEND gwa_bapicondx TO git_bapicondx.
  326.       ENDCASE.
  327.     ELSEIF ls_konv-mark = 'I'.
  328.       SELECT SINGLE stunr INTO lv_cond_st_no FROM t683s WHERE kvewe = 'A' AND kappl = 'V'  AND kalsm = lv_kalsm AND kschl = ls_konv-kschl.
  329.       IF sy-subrc = 0.
  330.         gwa_bapicond-itm_number = ls_konv-posnr. "行项目号
  331.         gwa_bapicond-cond_st_no = lv_cond_st_no. "步骤编号
  332.         gwa_bapicond-cond_count = '01'.          "条件计数器
  333.         gwa_bapicond-cond_type  = ls_konv-kschl. "定价条件
  334.         gwa_bapicond-cond_value = ls_konv-kbetr.
  335.         gwa_bapicond-currency   = ls_konv-waers. "货币码
  336.         APPEND gwa_bapicond  TO git_bapicond.

  337.         gwa_bapicondx-itm_number = ls_konv-posnr. "行项目号
  338.         gwa_bapicondx-cond_st_no = lv_cond_st_no."步骤编号
  339.         gwa_bapicondx-cond_count = '01'.          "条件计数器
  340.         gwa_bapicondx-cond_type  = ls_konv-kschl. "定价条件
  341.         gwa_bapicondx-updateflag = 'U'.  "I \U \D
  342.         gwa_bapicondx-cond_value = 'X'.
  343.         IF ls_konv-waers IS NOT INITIAL.
  344.           gwa_bapicondx-currency   = 'X'.
  345.         ENDIF.
  346.         APPEND gwa_bapicondx TO git_bapicondx.
  347.       ELSEIF ls_konv-kbetr IS NOT INITIAL.
  348.         e_message-type    = 'E'.
  349.         e_message-message = lv_kalsm && '定价过程中没有定价类型' && ls_konv-kschl.
  350.         EXIT.
  351.       ENDIF.
  352.     ENDIF.
  353.   ENDLOOP.

  354.   READ TABLE t_konv TRANSPORTING NO FIELDS WITH KEY mark = 'D'.
  355.   IF sy-subrc = 0.
  356.     ls_logic_switch-cond_handl = 'X'. "开启,能删除行项目,但是不能新增行项目,建议不开启,删除使用作废行项目替代
  357.   ENDIF.

  358.   CHECK e_message-type NE 'E'.
  359. *更改计划行类别增强
  360.   lv_stonr = i_header-stonr.
  361.   EXPORT lv_stonr TO MEMORY ID 'ABAP_STONR'.  "10/20/30/40/50

  362.   CALL FUNCTION 'SD_SALESDOCUMENT_CHANGE'
  363.     EXPORTING
  364.       salesdocument     = i_header-vbeln
  365.       logic_switch      = ls_logic_switch
  366.       order_header_in   = gwa_bapisdh1
  367.       order_header_inx  = gwa_bapisdh1x
  368.       call_from_bapi    = 'X' "开启长文本
  369.     TABLES
  370.       return            = git_bapiret2
  371.       item_in           = git_bapisditm
  372.       item_inx          = git_bapisditmx
  373.       schedule_in       = git_bapischdl
  374.       schedule_inx      = git_bapischdlx
  375.       partnerchanges    = git_partnerchanges
  376.       sales_text        = git_order_text
  377.       conditions_in     = git_bapicond
  378.       conditions_inx    = git_bapicondx
  379.     EXCEPTIONS
  380.       incov_not_in_item = 1
  381.       OTHERS            = 2.

  382.   LOOP AT git_bapiret2 INTO gwa_bapiret2 WHERE type CA 'AEX'.
  383.     IF e_message-message IS INITIAL.
  384.       e_message-message = gwa_bapiret2-message.
  385.     ELSE.
  386.       e_message-message = e_message-message && '/' && gwa_bapiret2-message.
  387.     ENDIF.
  388.   ENDLOOP.
  389.   IF sy-subrc = 0.
  390.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  391.     e_message-type  = 'E'.
  392.   ELSE.
  393.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  394.       EXPORTING
  395.         wait = 'X'.
  396.     e_message-type    = 'S'.
  397.     e_message-message = '订单修改成功'.
  398. *-------------------------by kevin 20221124 服务类订单修改结算规则 begin-------------------------------------------*
  399.     IF t_cobrb[] IS NOT INITIAL.
  400.       CALL FUNCTION 'ZSDFM036'
  401.         EXPORTING
  402.           i_vbeln   = i_header-vbeln
  403.         IMPORTING
  404.           e_message = ls_zots001
  405.         TABLES
  406.           t_item    = t_cobrb[].

  407.       IF ls_zots001-type = 'E'.
  408.         CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  409.         e_message = ls_zots001.
  410.         RETURN.
  411.       ENDIF.
  412.     ENDIF.
  413. *-------------------------BY KEVIN 20221124 服务类订单修改结算规则 ENDIN-------------------------------------------*

  414. *获取审核后的状态
  415.     CONCATENATE 'VB' i_header-vbeln '000000' INTO lv_objnr.
  416.     CALL FUNCTION 'STATUS_READ'
  417.       EXPORTING
  418.         client           = sy-mandt
  419.         objnr            = lv_objnr
  420.       IMPORTING
  421.         stonr            = e_stonr
  422.       EXCEPTIONS
  423.         object_not_found = 1
  424.         OTHERS           = 2.

  425.   ENDIF.

  426. ENDFUNCTION.
复制代码
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表