函数记录

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.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值