函数记录

本文介绍SAP系统中客户及订单管理的关键操作,包括创建和修改客户信息、客户联系人管理、更新订单序列号及采购订单修改等功能,并提供详细的函数调用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.取得生产订单对象号函数

  CALL FUNCTION 'K_AUFNR_OBJECT_KEY_GET'
       EXPORTING
            aufnr = m_aufnr  ‘’生产订单号
            kokrs = m_kokrs ‘’控制范围
       IMPORTING
            objnr = m_objnr. ‘’对象号

对象号可用于查询JEST、TJ02T、JCDS、JSTO订单状态信息等


2.整合消息到字符串中

*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = sy-msgid
        msgnr               = sy-msgno
        msgv1               = sy-msgv1
        msgv2               = sy-msgv2
        msgv3               = sy-msgv3
        msgv4               = sy-msgv4
      IMPORTING
        message_text_output = return_value."返回值

3.创建SAP客户函数,前台创建事务XD01,修改XD02,显示XD03,删除XD06

创建客户函数示例:

  DATA:ls_kna1 TYPE kna1,
       ls_knb1 TYPE knb1,
       ls_knvv TYPE knvv,
       ls_addr1 TYPE bapiaddr1,
       ls_addr2 TYPE bapiaddr2,
       ls_knvi  TYPE knvi,
       lt_knvi  TYPE STANDARD TABLE OF fknvi WITH HEADER LINE.

  DATA:lv_id TYPE bapi4001_1-objkey,
       lt_bapiad1vl TYPE STANDARD TABLE OF bapiad1vl WITH HEADER LINE,
       lt_bapiad1vl_x TYPE STANDARD TABLE OF bapiad1vlx WITH HEADER LINE,
       lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

  DATA:lv_kunnr TYPE kunnr,
       lv_num   TYPE i,
       lv_addrnumber TYPE adrc-addrnumber,
       lv_region TYPE zcrm_region-sapregion,
       lv_cityc  TYPE zcrm_region-sapregion,
       lv_num1    TYPE i.

*转换SAP地区、城市代码
  CLEAR:lv_region,lv_cityc.
  PERFORM frm_get_sapregion USING region
                            CHANGING lv_region.
  PERFORM frm_get_sapregion USING cityc
                            CHANGING lv_cityc.

  CLEAR:lv_num1.
  lv_num1 = STRLEN( lv_region ).

  IF lv_num1 <> 3.
    return_status = 'F'.
    return_value  = 'CRM标准行政区域对应SAP区域代码维护错误,地区(省份)应该为三位数字!'.
    RETURN.
  ENDIF.

*检查此客户是否已经创建,已经创建,返回已经创建的的客户号
  IF requesttype = 'CREATE'.
    CLEAR:lv_addrnumber.
    SELECT SINGLE addrnumber
      INTO lv_addrnumber
      FROM adrc
     WHERE extension1 = accountnumber.
    IF sy-subrc = 0.
      CLEAR:sapcode.
      SELECT SINGLE kunnr
        INTO sapcode
        FROM kna1
       WHERE adrnr = lv_addrnumber.
      IF sy-subrc = 0.
        requesttype = 'UPDATE'.
      ENDIF.
    ENDIF.
  ENDIF.

*客户主文件的一般数据
  IF requesttype = 'UPDATE'.
    ls_kna1-kunnr = sapcode."客户代码
  ENDIF.
  ls_kna1-mandt = '300'.
  ls_kna1-ktokd = ktokd."科目组
  ls_kna1-cityc = lv_cityc."城市代码
  ls_kna1-stceg = stceg."增值税登记号
  IF requesttype = 'UPDATE'.
    ls_kna1-loevm = loevm."主记录中删除标记
  ENDIF.

*客户主数据 (公司代码)
  ls_knb1-mandt = '300'.
  IF requesttype = 'UPDATE'.
    ls_knb1-kunnr = sapcode.
    ls_knb1-loevm = loevm."主记录删除标记(公司代码级)
  ENDIF.
  ls_knb1-bukrs = bukrs."公司代码
  ls_knb1-akont = akont."统驭科目
  ls_knb1-xzver = xzver."付款历史记录

*客户主记录销售数据
  ls_knvv-mandt = '300'.
  IF requesttype = 'UPDATE'.
    ls_knvv-kunnr = sapcode.
    ls_knvv-loevm = loevm."客户的删除标记 (销售级别)
  ENDIF.
  ls_knvv-vkorg = vkorg."销售组织
  ls_knvv-vtweg = vtweg."分销渠道
  ls_knvv-spart = spart."产品组
  ls_knvv-kdgrp = kdgrp."客户组
  ls_knvv-kalks = kalks."客户定价过程
  ls_knvv-bzirk = bzirk."销售地区
  ls_knvv-vkbur = vkbur."销售部门
  ls_knvv-waers = waers."货币
  ls_knvv-pltyp = pltyp."价格清单
  ls_knvv-vsbed = vsbed."装运条件
  ls_knvv-ktgrd = ktgrd."账户分配组

*地址的 BAPI 参考结构(组织/公司)
  ls_addr1-sort1 = sort1."城市描述
  ls_addr1-sort2 = sort2."组织机构代码

  lv_num = STRLEN( name )."客户名称
  IF lv_num < 35.
    ls_addr1-name  = name.
  ELSEIF lv_num < 69.
    ls_addr1-name  = name+0(34).
    ls_addr1-name_2 = name+34(34).
  ELSEIF lv_num <= 100.
    ls_addr1-name  = name+0(34).
    ls_addr1-name_2 = name+34(34).
    ls_addr1-name_3 = name+68(32).
  ENDIF.

  ls_addr1-street = street."用户地址
  ls_addr1-postl_cod1 = post_code1."城市邮政编码
  ls_addr1-city = city1."城市描述
  ls_addr1-country = country."国家代码
  ls_addr1-langu = sy-langu."语言
  ls_addr1-region = lv_region."省份
  ls_addr1-tel1_numbr = mob_number."电话
  ls_addr1-fax_number = fax_number."传真
  ls_addr1-e_mail = smtp_addr."电子邮箱
  ls_addr1-formofaddr = title_medi."标题

*设置税分类
  lt_knvi-mandt = '300'.
  IF requesttype = 'UPDATE'.
    lt_knvi-kunnr = sapcode."客户代码
  ENDIF.
  lt_knvi-aland = country.
  lt_knvi-tatyp = 'MWST'.
  lt_knvi-taxkd = taxkd.
  lt_knvi-kz    = 'I'.
  APPEND lt_knvi.

  CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
    EXPORTING
      i_kna1                     = ls_kna1
      i_knb1                     = ls_knb1
      i_knvv                     = ls_knvv
      i_bapiaddr1                = ls_addr1
      i_maintain_address_by_kna1 = 'X'
      pi_postflag                = 'X'
    IMPORTING
      e_kunnr                    = lv_kunnr
    TABLES
      t_xknvi                    = lt_knvi
    EXCEPTIONS
      client_error               = 1
      kna1_incomplete            = 2
      knb1_incomplete            = 3
      knb5_incomplete            = 4
      knvv_incomplete            = 5
      kunnr_not_unique           = 6
      sales_area_not_unique      = 7
      sales_area_not_valid       = 8
      insert_update_conflict     = 9
      number_assignment_error    = 10
      number_not_in_range        = 11
      number_range_not_extern    = 12
      number_range_not_intern    = 13
      account_group_not_valid    = 14
      parnr_invalid              = 15
      bank_address_invalid       = 16
      tax_data_not_valid         = 17
      no_authority               = 18
      company_code_not_unique    = 19
      dunning_data_not_valid     = 20
      knb1_reference_invalid     = 21
      cam_error                  = 22
      OTHERS                     = 23.
  IF sy-subrc <> 0.
    ROLLBACK WORK.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    return_status = 'F'."返回状态(S:成功;F:失败)

    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = sy-msgid
        msgnr               = sy-msgno
        msgv1               = sy-msgv1
        msgv2               = sy-msgv2
        msgv3               = sy-msgv3
        msgv4               = sy-msgv4
      IMPORTING
        message_text_output = return_value."返回值

  ELSE.

    CLEAR:lt_bapiad1vl,lt_bapiad1vl[],lt_return,lt_return[].
    lt_bapiad1vl-extens_1 = accountnumber.
    APPEND lt_bapiad1vl.
    CLEAR:lt_bapiad1vl_x,lt_bapiad1vl_x[].
    lt_bapiad1vl_x-extens_1 = 'X'.
    APPEND lt_bapiad1vl_x.

    CLEAR:lv_id.
    IF requesttype = 'UPDATE'.
      lv_id = sapcode."客户代码
    ELSE.
      lv_id = lv_kunnr.
    ENDIF.

    CALL FUNCTION 'BAPI_ADDRESSORG_CHANGE'
      EXPORTING
        obj_type                          = 'KNA1'
        obj_id                            = lv_id
*   OBJ_ID_EXT                        = ' '
*   CONTEXT                           = 1
*   ACCEPT_ERROR                      = ' '
*   SAVE_ADDRESS                      = 'X'
*   IV_CHECK_ADDRESS                  = 'X'
*   IV_TIME_DEPENDENT_COMM_DATA       = ' '
* IMPORTING
*   ADDRESS_NUMBER                    =
     TABLES
       bapiad1vl                         = lt_bapiad1vl
       bapiad1vl_x                       = lt_bapiad1vl_x
       return                            = lt_return
              .

    IF lt_return[] IS INITIAL.
      COMMIT WORK.

      return_status = 'S'."返回状态(S:成功;F:失败)
      IF requesttype = 'UPDATE'.
        kunnr = sapcode.
      ELSE.
        kunnr = lv_kunnr.
      ENDIF.
    ELSE.
      ROLLBACK WORK.

      return_status = 'F'."返回状态(S:成功;F:失败)
      CLEAR:lt_return.
      READ TABLE lt_return INDEX 1.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = lt_return-id
          msgnr               = lt_return-number
          msgv1               = lt_return-message_v1
          msgv2               = lt_return-message_v2
          msgv3               = lt_return-message_v3
          msgv4               = lt_return-message_v4
        IMPORTING
          message_text_output = return_value."返回值
    ENDIF.

  ENDIF.


4.修改客户地址函数BAPI_ADDRESSORG_CHANGE,示例如上


5.创建客户联系人前台事务VAP1,修改VAP2,显示VAP3,相应函数如下:

ISAI_CONTACT_CREATE

ISAI_CONTACT_CHANGE

ISAI_CONTACT_DELETE

示例:

  DATA:lst_address TYPE bapiaddr3,
       lst_address_changes TYPE bapiaddr3x,
       lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
       lv_return_status TYPE bapi_mtype,
       lv_return_value  TYPE zreturn_value.

  lst_address-lastname = name_last.
  lst_address-tel1_numbr = telf.
  sy-batch = 'X'.
*创建
  IF requesttype = 'CREATE'.
    CALL FUNCTION 'ISAI_CONTACT_CREATE'
      EXPORTING
        customerid              = kunnr
        address                 = lst_address
     IMPORTING
       new_contactid           = vonnr
       return_status           = lv_return_status
     TABLES
       return                  = lt_return
*       extensions_import       =
*       extensions_export       =
              .
    IF lv_return_status = 'S'.
      return_status = 'S'.
      return_value  = '成功'.
    ELSE.
      return_status = 'F'.
      CLEAR:lt_return.
      LOOP AT lt_return.
        IF sy-tabix = 1.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          return_value = lv_return_value.
        ELSE.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          CONCATENATE return_value lv_return_value INTO return_value SEPARATED BY space.
        ENDIF.
        CLEAR:lt_return.
      ENDLOOP.
    ENDIF.
*更新
  ELSEIF requesttype = 'UPDATE'.
    lst_address_changes-lastname = 'X'.
    lst_address_changes-tel1_numbr = 'X'.
    CALL FUNCTION 'ISAI_CONTACT_CHANGE'
      EXPORTING
        customerid              = kunnr
        contactid               = parnr
        address                 = lst_address
        address_changes         = lst_address_changes
     IMPORTING
       return_status           = lv_return_status
     TABLES
       return                  = lt_return
*   EXTENSIONS_IMPORT       =
*   EXTENSIONS_EXPORT       =
              .
    vonnr = parnr.
    IF lv_return_status = 'S'.
      return_status = 'S'.
      return_value  = '成功'.
    ELSE.
      return_status = 'F'.
      CLEAR:lt_return.
      LOOP AT lt_return.
        IF sy-tabix = 1.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          return_value = lv_return_value.
        ELSE.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          CONCATENATE return_value lv_return_value INTO return_value SEPARATED BY space.
        ENDIF.
        CLEAR:lt_return.
      ENDLOOP.
    ENDIF.
  ELSEIF requesttype = 'DELETE'.
    CALL FUNCTION 'ISAI_CONTACT_DELETE'
      EXPORTING
        customerid              = kunnr
        contactid               = parnr
     IMPORTING
       return_status           = lv_return_status
     TABLES
       return                  = lt_return
*   EXTENSIONS_IMPORT       =
*   EXTENSIONS_EXPORT       =
              .
    vonnr = parnr.
    IF lv_return_status = 'S'.
      return_status = 'S'.
      return_value  = '成功'.
    ELSE.
      return_status = 'F'.
      CLEAR:lt_return.
      LOOP AT lt_return.
        IF sy-tabix = 1.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          return_value = lv_return_value.
        ELSE.
          IF lt_return-message IS NOT INITIAL.
            lv_return_value = lt_return-message.
          ELSE.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                msgid               = lt_return-id
                msgnr               = lt_return-number
                msgv1               = lt_return-message_v1
                msgv2               = lt_return-message_v2
                msgv3               = lt_return-message_v3
                msgv4               = lt_return-message_v4
              IMPORTING
                message_text_output = lv_return_value."返回值
          ENDIF.
          CONCATENATE return_value lv_return_value INTO return_value SEPARATED BY space.
        ENDIF.
        CLEAR:lt_return.
      ENDLOOP.
    ENDIF.
  ENDIF.

4.转换成内部输入(增加前导0)
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = 
        IMPORTING
          output = .

转换成外部输入(去掉前导0)

          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              input  = 
            IMPORTING
              output = 

5.BAPI更新订单顺序编号

DATA:gv_number TYPE bapi_order_key-order_number,"订单号
     gwa_orderdata TYPE bapi_pp_order_change,"更改字段
     gwa_orderdatax TYPE bapi_pp_order_changex,"更改字段标识
     gwa_return TYPE bapiret2."返回消息

        gv_number = gwa_output-aufnr.
        gwa_orderdata-sequence_number = gwa_output-seqnr.
        gwa_orderdatax-sequence_number = 'X'.
        CALL FUNCTION 'BAPI_PRODORD_CHANGE'
          EXPORTING
            number                 = gv_number
            orderdata              = gwa_orderdata
            orderdatax             = gwa_orderdatax
       IMPORTING
         return                 = gwa_return
*     ORDER_TYPE             =
*     ORDER_STATUS           =
*     MASTER_DATA_READ       =
                  .
*更新失败
        IF gwa_return-type = 'E'.
          gwa_output-message = gwa_return-message.
          ROLLBACK WORK.
        ELSE.
*更新成功
          gwa_output-message = '更新成功'.
          COMMIT WORK AND WAIT.
        ENDIF.
      ELSE.
*更新表失败
        gwa_output-message = '更新半成品订单与整车预留关系表(ZREL_HAFAFKO_RES 激)失败'.
        ROLLBACK WORK.
      ENDIF.

6.BAPI修改采购订单

*新增采购订单项目号
    CLEAR: gt_return,gt_poschedule,gt_poschedulex,gv_flag,gt_poitem,gt_poitemx.
    REFRESH : gt_return,gt_poschedule,gt_poschedulex,gt_poitem,gt_poitemx.
*修改采购订单
    gt_poschedule-po_item = wa_data-ebelp.
    gt_poschedule-sched_line = '0001'.
    gt_poschedule-delivery_date = wa_data-eindt1.
    gt_poschedule-quantity = wa_data-menge1.
    APPEND gt_poschedule.
    CLEAR  gt_poschedule.
    gt_poschedulex-po_item = wa_data-ebelp.
    gt_poschedulex-po_itemx = 'X'.
    gt_poschedulex-sched_line = '0001'.
    gt_poschedulex-sched_linex = 'X'.
    gt_poschedulex-delivery_date = 'X'.
    gt_poschedulex-quantity = 'X'.
    APPEND gt_poschedulex.
    CLEAR  gt_poschedulex.
*调用函数修改采购订单
    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder = wa_data-ebeln
      TABLES
        return        = gt_return
        poschedule    = gt_poschedule
        poschedulex   = gt_poschedulex.
    LOOP AT gt_return WHERE type = 'E'.
      CONCATENATE '采购订单' wa_data-ebeln '项目' wa_data-ebelp gt_return-message INTO gt_message SEPARATED BY ''.
      APPEND gt_message.
      CLEAR  gt_message.
      gv_flag = 'X'.
    ENDLOOP.
    IF gv_flag = 'X'.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      CONTINUE.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.
    WAIT UP TO 1 SECONDS.
    CLEAR: gt_return,gt_poschedule,gt_poschedulex,gv_flag,gt_poitem,gt_poitemx.
    REFRESH : gt_return,gt_poschedule,gt_poschedulex,gt_poitem,gt_poitemx.
*创建采购订单
*物料数量信息
    gt_poitem-po_item  = gv_item.
    gt_poitem-quantity = wa_data-menge2.
    gt_poitem-material = wa_data-matnr.
    gt_poitem-plant    = gt_ekpo-werks.
    gt_poitem-item_cat = gt_ekpo-pstyp.
    gt_poitem-stge_loc = gt_ekpo-lgort.
    APPEND gt_poitem.
    CLEAR  gt_poitem.
    gt_poitemx-po_item  = gv_item.
    gt_poitemx-po_itemx = 'X'.
    gt_poitemx-material = 'X'.
    gt_poitemx-plant    = 'X'.
    gt_poitemx-item_cat = 'X'.
    gt_poitemx-stge_loc = 'X'.
    APPEND gt_poitemx.
    CLEAR  gt_poitemx.
*修改采购订单
    gt_poschedule-po_item = gv_item.
    gt_poschedule-delivery_date = wa_data-eindt2.
    gt_poschedule-quantity = wa_data-menge2.
    APPEND gt_poschedule.
    CLEAR  gt_poschedule.
    gt_poschedulex-po_item = gv_item.
    gt_poschedulex-po_itemx = 'X'.
    gt_poschedulex-delivery_date = 'X'.
    gt_poschedulex-quantity = 'X'.
    APPEND gt_poschedulex.
    CLEAR  gt_poschedulex.
*调用函数增加采购订单行项目
    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder = wa_data-ebeln
      TABLES
        return        = gt_return
        poschedule    = gt_poschedule
        poschedulex   = gt_poschedulex
        poitem        = gt_poitem
        poitemx       = gt_poitemx.
    LOOP AT gt_return WHERE type = 'E'.
      CONCATENATE '采购订单' wa_data-ebeln '新建项目' gt_return-message INTO gt_message SEPARATED BY ''.
      APPEND gt_message.
      CLEAR  gt_message.
      gv_flag = 'X'.
    ENDLOOP.
    IF gv_flag = 'X'.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      CONTINUE.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.
    WAIT UP TO 1 SECONDS.
*begin modify by zhangzaigang 20120525 物料存在舍入值时重写新增加项目数量
    DATA: lv_bstrf LIKE marc-bstrf,
          lv_ebelp LIKE ekpo-ebelp.
    lv_ebelp = gv_item.
    SELECT SINGLE bstrf
      INTO lv_bstrf
      FROM marc
     WHERE matnr = wa_data-matnr
       AND werks = gt_ekpo-werks.
    IF sy-subrc = 0 AND lv_bstrf <> ''.
      REFRESH: gt_poschedule,gt_poschedulex,gt_return.
      CLEAR:   gt_poschedule,gt_poschedulex,gt_return,gv_flag.
*修改采购订单
      gt_poschedule-po_item = gv_item.
      gt_poschedule-sched_line = '0001'.
      gt_poschedule-quantity = wa_data-menge2.
      APPEND gt_poschedule.
      CLEAR  gt_poschedule.
      gt_poschedulex-po_item = gv_item.
      gt_poschedulex-po_itemx = 'X'.
      gt_poschedulex-sched_line = '0001'.
      gt_poschedulex-sched_linex = 'X'.
      gt_poschedulex-quantity = 'X'.
      APPEND gt_poschedulex.
      CLEAR  gt_poschedulex.
*调用函数修改采购订单
      CALL FUNCTION 'BAPI_PO_CHANGE'
        EXPORTING
          purchaseorder = wa_data-ebeln
        TABLES
          return        = gt_return
          poschedule    = gt_poschedule
          poschedulex   = gt_poschedulex.
      LOOP AT gt_return WHERE type = 'E'.
        CONCATENATE '采购订单' wa_data-ebeln '项目' lv_ebelp gt_return-message INTO gt_message SEPARATED BY ''.
        APPEND gt_message.
        CLEAR  gt_message.
        gv_flag = 'X'.
      ENDLOOP.
      IF gv_flag = 'X'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CONTINUE.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.
      WAIT UP TO 1 SECONDS.
    ENDIF.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值