sap-ps创建WBS

METHOD zps_ii_si_ps_wbs_in~si_ps_wbs_in.
*** **** INSERT IMPLEMENTATION HERE **** ***

"WBS新增
DATA: ld_project_definition TYPE bapi_bus2001_new-project_definition, "项目定义,要挂在哪个项目上

      "定义WBS详情
      it_bapi_bus2054_new   TYPE STANDARD TABLE OF bapi_bus2054_new,
      wa_bapi_bus2054_new   TYPE bapi_bus2054_new,

      "定义返回参数

      it_bapiretwbs         TYPE STANDARD TABLE OF bapiret2,
      wa_bapiretwbs         TYPE bapiret2.


"WBS修改
DATA:
  ld_i_project_definition TYPE bapi_bus2001_new-project_definition,

  "要更新的WBS信息
  wa_e_project_wbs_chg    TYPE bapi_bus2054_chg,
  lt_e_project_wbs_chg    TYPE STANDARD TABLE OF bapi_bus2054_chg,

  "要更新那些WBS字段
  wa_e_project_wbs_upd    TYPE bapi_bus2054_upd,
  lt_e_project_wbs_upd    TYPE STANDARD TABLE OF bapi_bus2054_upd.

"返回接口参数
DATA: lo_output    TYPE REF TO zun_co_si_un_resp_out,
      ls_output    TYPE zun_mt_un_resp,
      ls_output_hd TYPE zmmi005_dt_mesg_hd,
      lt_output_bd TYPE zun_dt_un_resp_msgbd_tab,
      ls_output_bd TYPE zun_dt_un_resp_msgbd.


DATA: ls_zpswbs TYPE zpswbs,
      lt_zpswbs TYPE STANDARD TABLE OF zpswbs.


DATA:
  "要删除的WBS信息
  wa_e_project_wbs_del TYPE bapi_wbs_list,
  lt_e_project_wbs_del TYPE STANDARD TABLE OF bapi_wbs_list.



"下达
DATA:lv_proj       TYPE bapipr-project_definition,
     lv_ud_sys_sta TYPE bapi_system_status-system_status,
     lv_ud_usr_sta TYPE bapi_user_status-user_status,
     lv_sys_sta    TYPE bapi_system_status-system_status,
     lv_usr_sta    TYPE bapi_user_status-user_status,
     lt_result     TYPE STANDARD TABLE OF bapi_status_result,
     ls_ret        TYPE bapi_status_result,
     lt_return     TYPE STANDARD TABLE OF bapiret2,
     ls_return     TYPE  bapiret2.



LOOP AT   input-mt_ps_wbs-msgbd  INTO DATA(ls_input).

  "校验
  IF ls_input-psphi IS INITIAL.
    "错误反馈
    ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.

    ls_output_bd-itemid    = ls_input-itemid.
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  '关键字段 项目号 不能为空'.
      ls_output_bd-retid     = '0'.
      APPEND ls_output_bd TO  lt_output_bd.
      CONTINUE.
    ENDIF.
    
    IF  ls_input-posnr IS INITIAL .
      "错误反馈
      ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
      ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  '关键字段 WBS要素 不能为空'.
      ls_output_bd-retid     = '0'.
      APPEND ls_output_bd TO  lt_output_bd.
      CONTINUE.
    ENDIF.
    
    IF  ls_input-zflag   IS INITIAL.
      "错误反馈
      ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
      ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  '关键字段 维护类型 不能为空'.
      ls_output_bd-retid     = '0'.
      APPEND ls_output_bd TO  lt_output_bd.
      CONTINUE.
    ENDIF.
    
    "写入自建表
    ls_zpswbs-itemid     = ls_input-itemid.
    ls_zpswbs-zflag      = ls_input-zflag.
    ls_zpswbs-posnr      = ls_input-posnr.
    ls_zpswbs-psphi      = ls_input-psphi.
    ls_zpswbs-post1      = ls_input-post1.
    ls_zpswbs-up         = ls_input-up.
    ls_zpswbs-zleft      = ls_input-left.
    ls_zpswbs-zsapjsdat  = sy-datum .
    ls_zpswbs-zsapjstim  = sy-uzeit.
    
    MODIFY zpswbs FROM ls_zpswbs.
    COMMIT WORK.
    
    IF ls_input-zflag = 'I'.
    
      CLEAR:it_bapi_bus2054_new.
      "项目定义
      ld_project_definition = ls_input-psphi.
      "WBS
      wa_bapi_bus2054_new-wbs_element                    = ls_input-posnr.     "工作分解结构元素 (WBS 元素)
      wa_bapi_bus2054_new-description                    = ls_input-post1.     "PS: 短描述 (第一行文本)
      wa_bapi_bus2054_new-wbs_up                         = ls_input-up.
      wa_bapi_bus2054_new-wbs_left                       = ls_input-left.
    
  •      wa_bapi_bus2054_new-responsible_no                 = ''.         "负责人编号
    
  •      wa_bapi_bus2054_new-statistical                    = ''.     "统计
    
  •      wa_bapi_bus2054_new-wbs_cctr_posted_actual         = ''.     "CCtr 过账
    
      APPEND wa_bapi_bus2054_new TO it_bapi_bus2054_new.
      CLEAR:wa_bapi_bus2054_new.
    
      "第三步:调用函数
    
      CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    
      CALL FUNCTION 'BAPI_BUS2054_CREATE_MULTI'
        EXPORTING
          i_project_definition = ld_project_definition
        TABLES
          it_wbs_element       = it_bapi_bus2054_new
          et_return            = it_bapiretwbs.
    
      "第四步:判断是否有错误消息
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2.
    
      ENDLOOP.
    
    
      "第四步:如果有错误消息则退出
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
        "错误反馈
        ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '0'.
        APPEND ls_output_bd TO  lt_output_bd.
        CLEAR :it_bapi_bus2054_new,it_bapiretwbs.
      ENDIF.
    
      CHECK sy-subrc NE 0.
    
    
      "第四步:没有错误消息则执行预提交
      CALL FUNCTION 'BAPI_PS_PRECOMMIT'
        TABLES
          et_return = it_bapiretwbs.
    
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
                 wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
      ENDLOOP.
    
    
      "第五步:预提交有错误消息则执行回滚
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  •        IMPORTING
    
  •          return = it_bapiretwbs.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
        "错误反馈
        ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '0'.
        APPEND ls_output_bd TO  lt_output_bd.
    
      ELSE.
        "第五步:预提交无错误消息则执行正式提交
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
    
  •          IMPORTING
    
  •         return             = wa_bapiretwbs
        ls_output_bd-msgid = input-mt_ps_wbs-msghd-msgid.
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '1'.
        APPEND ls_output_bd TO  lt_output_bd.
    
        UPDATE zpswbs SET zfkzt = '1'  zfgtxt = wa_bapiretwbs-message WHERE itemid = ls_input-itemid  AND zflag = ls_input-zflag
                                                                        AND posnr = ls_input-posnr AND psphi = ls_input-psphi.
        COMMIT WORK.
    
  • WBS元素创建成功
    ENDIF.
    wbs结束*****

下达REL***

  •    lv_proj = ls_input-psphi.
    
  •    lv_sys_sta = 'REL'.
    
  •    CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    
  •    CALL FUNCTION 'BAPI_BUS2001_SET_STATUS'
    
  •      EXPORTING
    
  •        project_definition = lv_proj
    
  •        undo_system_status = lv_ud_sys_sta
    

** undo_user_status = lv_ud_usr_sta
** set_system_status = lv_sys_sta
** set_user_status = lv_usr_sta

  •      TABLES
    
  •        e_result           = lt_result.
    
  •    LOOP AT lt_result INTO ls_ret WHERE message_type CA 'AE'.
    

** MESSAGE ID ls_ret-message_id TYPE ls_ret-status_type NUMBER ls_ret-message_number
** INTO ls_ret-message_text.
*** WITH ls_ret-message_v1 ls_ret-message_v2
*** ls_ret-message_v3 ls_ret-message_v4.

  •    ENDLOOP.
    
  •    IF ls_ret-message_text IS  INITIAL.
    
  •      CALL FUNCTION 'BAPI_PS_PRECOMMIT'.
    
  •      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    
  •        EXPORTING
    
  •          wait = 'X'.
    
  •    ELSE.
    
  •      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  •      "错误反馈
    
  •      ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    
  •      ls_output_bd-itemid    = ls_input-itemid.
    

** ls_output_bd-order1 = ls_body-anln1.

  •      ls_output_bd-rettxt    =  ls_ret-message_text.
    
  •      ls_output_bd-retid     = '0'.
    
  •      APPEND ls_output_bd TO  lt_output_bd.
    
  •    ENDIF.
    
      CLEAR :it_bapi_bus2054_new,it_bapiretwbs.
    ENDIF.
    
    
    IF ls_input-zflag = 'U'.
    
      CLEAR:wa_e_project_wbs_chg,lt_e_project_wbs_chg,wa_e_project_wbs_upd,lt_e_project_wbs_upd.
      ld_i_project_definition = ls_input-psphi.
      "MOVE-CORRESPONDING  wa_e_project_wbs to wa_e_project_wbs_chg."通过查询的WBS拷贝变量
      wa_e_project_wbs_chg-wbs_element = ls_input-posnr.
      wa_e_project_wbs_chg-description = ls_input-post1."更改描述
    
      "设置更新标志
      wa_e_project_wbs_upd-wbs_element = wa_e_project_wbs_chg-wbs_element.
      wa_e_project_wbs_upd-description = 'X'.
    
      APPEND wa_e_project_wbs_chg TO lt_e_project_wbs_chg.
      APPEND wa_e_project_wbs_upd TO lt_e_project_wbs_upd.
    
    
    
      "第三步,调用
      CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    
      CALL FUNCTION 'BAPI_BUS2054_CHANGE_MULTI'
        EXPORTING
          i_project_definition  = ld_i_project_definition
        TABLES
          it_wbs_element        = lt_e_project_wbs_chg
          it_update_wbs_element = lt_e_project_wbs_upd
          et_return             = it_bapiretwbs
    
  •       EXTENSIONIN           =
    
  •       EXTENSIONOUT          =
        .
    
      "第四步:判断是否有错误消息
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
                 wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
  •        WRITE:/ '修改时报错:',wa_bapiret2-message.
    
      ENDLOOP.
    
    
      "第四步:如果有错误消息则退出
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
    
        ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '0'.
        APPEND ls_output_bd TO  lt_output_bd.
      ENDIF.
    
    
      CHECK sy-subrc NE 0.
    
      "第四步:没有错误消息则执行预提交
      CALL FUNCTION 'BAPI_PS_PRECOMMIT'
        TABLES
          et_return = it_bapiretwbs.
    
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
                 wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
  •        WRITE:/ '预提交时报错:',wa_bapiret3-message.
    
      ENDLOOP.
    
    
      "第五步:预提交有错误消息则执行回滚
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  •        IMPORTING
    
  •          return = it_bapiretwbs.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
        ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '0'.
        APPEND ls_output_bd TO  lt_output_bd.
      ELSE.
        "第五步:预提交无错误消息则执行正式提交
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait   = 'X'
          IMPORTING
            return = wa_bapiretwbs.
    
  •        WRITE:/ 'WBS修改成功:',wa_bapiret3-message.
      ENDIF.
    

修改wbs结束*********8

    ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    ls_output_bd-itemid    = ls_input-itemid.
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  wa_bapiretwbs-message.
      ls_output_bd-retid     = '1'.
      APPEND ls_output_bd TO  lt_output_bd.
    
      UPDATE zpswbs SET zfkzt = '1'  zfgtxt = wa_bapiretwbs-message WHERE itemid = ls_input-itemid  AND zflag = ls_input-zflag
                                                                      AND posnr = ls_input-posnr AND psphi = ls_input-psphi.
      COMMIT WORK.
    
    ENDIF.
    
    IF ls_input-zflag = 'D'.
    
      "第二步,赋值
      CLEAR:wa_e_project_wbs_del,lt_e_project_wbs_del.
      ld_i_project_definition = ls_input-psphi.
      "MOVE-CORRESPONDING  wa_e_project_wbs to wa_e_project_wbs_chg."通过查询的WBS拷贝变量
      wa_e_project_wbs_del-wbs_element = ls_input-posnr.
    
      APPEND wa_e_project_wbs_del TO lt_e_project_wbs_del.
    
    
    
    
      "第三步,调用
      CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    
    
      CALL FUNCTION 'BAPI_BUS2054_DELETE_MULTI'
        EXPORTING
          i_project_definition  = ld_i_project_definition
        TABLES
          it_delete_wbs_element = lt_e_project_wbs_del
          et_return             = it_bapiretwbs
    
  •       EXTENSIONIN           =
    
  •       EXTENSIONOUT          =
        .
    
      "第四步:判断是否有错误消息
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
                 wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
  •        WRITE:/ '修改时报错:',wa_bapiret2-message.
    
      ENDLOOP.
    
    
      "第四步:如果有错误消息则退出
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
        ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
        ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
        ls_output_bd-rettxt    =  wa_bapiretwbs-message.
        ls_output_bd-retid     = '0'.
        APPEND ls_output_bd TO  lt_output_bd.
      ENDIF.
    
      CHECK sy-subrc NE 0.
    
      "第四步:没有错误消息则执行预提交
      CALL FUNCTION 'BAPI_PS_PRECOMMIT'
        TABLES
          et_return = it_bapiretwbs.
    
      LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
        MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
            INTO wa_bapiretwbs-message
            WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
                 wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
  •        WRITE:/ '预提交时报错:',wa_bapiret3-message.
    
      ENDLOOP.
    
    
      "第五步:预提交有错误消息则执行回滚
      IF sy-subrc EQ 0.
    
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  •        IMPORTING
    
  •          return = it_bapiretwbs.
    
        CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
        CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
          EXPORTING
            i_precommit_ok = 'Y'.
    
      ELSE.
        "第五步:预提交无错误消息则执行正式提交
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait   = 'X'
          IMPORTING
            return = wa_bapiretwbs.
    
  •        WRITE:/ 'WBS修改成功:',wa_bapiret3-message.
      ENDIF.
    

修改wbs结束*********8

    ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    ls_output_bd-itemid    = ls_input-itemid.
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  wa_bapiretwbs-message.
      ls_output_bd-retid     = '1'.
      APPEND ls_output_bd TO  lt_output_bd.
    
      UPDATE zpswbs SET zfkzt = '1'  zfgtxt = wa_bapiretwbs-message WHERE itemid = ls_input-itemid  AND zflag = ls_input-zflag
                                                                      AND posnr = ls_input-posnr AND psphi = ls_input-psphi.
      COMMIT WORK.
    
    ENDIF.
    CLEAR: ls_output_bd ,wa_bapiretwbs,ld_i_project_definition.
    

    ENDLOOP.

    "下达?什么时候下达? ??
    IF ls_input-zflag = ‘I’ AND ls_output_bd IS INITIAL .
    lv_proj = ls_input-psphi.
    lv_sys_sta = ‘REL’.
    CALL FUNCTION ‘BAPI_PS_INITIALIZATION’.

    CALL FUNCTION 'BAPI_BUS2001_SET_STATUS'
      EXPORTING
        project_definition = lv_proj
    
  •     undo_system_status = lv_ud_sys_sta
    
  •     undo_user_status   = lv_ud_usr_sta
        set_system_status  = lv_sys_sta
    
  •     set_user_status    = lv_usr_sta
      TABLES
        e_result           = lt_result.
    
    LOOP AT lt_result INTO ls_ret WHERE message_type CA 'AE'.
    
  •    MESSAGE ID ls_ret-message_id TYPE ls_ret-status_type NUMBER ls_ret-message_number
    
  •        INTO ls_ret-message_text.
    

** WITH ls_ret-message_v1 ls_ret-message_v2
** ls_ret-message_v3 ls_ret-message_v4.
ENDLOOP.

  "第四步:如果有错误消息则退出
  IF sy-subrc EQ 0.

    CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.

    CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
      EXPORTING
        i_precommit_ok = 'Y'.

    "错误反馈
    ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.

    ls_output_bd-itemid    = ls_input-itemid.
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  ls_ret-message_text.
      ls_output_bd-retid     = '0'.
      APPEND ls_output_bd TO lt_output_bd.
    
    ENDIF.
    
    CHECK sy-subrc NE 0.
    
    
    "第四步:没有错误消息则执行预提交
    CALL FUNCTION 'BAPI_PS_PRECOMMIT'
      TABLES
        et_return = it_bapiretwbs.
    
    LOOP AT it_bapiretwbs INTO wa_bapiretwbs WHERE type CA 'AE'.
    
    
      MESSAGE ID wa_bapiretwbs-id TYPE wa_bapiretwbs-type NUMBER wa_bapiretwbs-number
          INTO wa_bapiretwbs-message
          WITH wa_bapiretwbs-message_v1 wa_bapiretwbs-message_v2
               wa_bapiretwbs-message_v3 wa_bapiretwbs-message_v4.
    
  •        WRITE:/ '预提交时报错:',wa_bapiret3-message.
    
    ENDLOOP.
    
    IF sy-subrc EQ 0.
    
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  •        IMPORTING
    
  •          return = it_bapiretwbs.
    
      CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
    
      CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
        EXPORTING
          i_precommit_ok = 'Y'.
      "错误反馈
      ls_output_bd-msgid     = input-mt_ps_wbs-msghd-msgid.
    
      ls_output_bd-itemid    = ls_input-itemid.
    
  •    ls_output_bd-order1    = ls_body-anln1.
      ls_output_bd-rettxt    =  ls_ret-message_text.
      ls_output_bd-retid     = '0'.
      APPEND ls_output_bd TO lt_output_bd.
    
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.
    

    ENDIF.

    "反馈头信息
    ls_output_hd-msgid = input-mt_ps_wbs-msghd-msgid.
    ls_output_hd-tlgid = input-mt_ps_wbs-msghd-tlgid.
    ls_output_hd-tlgname = input-mt_ps_wbs-msghd-tlgname.
    ls_output_hd-dtsend = sy-datum && sy-uzeit.
    ls_output_hd-sender = ‘ERP’.
    ls_output_hd-receiver = input-mt_ps_wbs-msghd-sender.

    ls_output-mt_un_resp-msghd = ls_output_hd.
    ls_output-mt_un_resp-msgbd = lt_output_bd.

    "调用返回接口,同时获取发送数据的xml消息id.
    TRY .
    CREATE OBJECT lo_output.
    CALL METHOD lo_output->si_un_resp_out
    EXPORTING
    output = ls_output.

  •    COMMIT WORK AND WAIT.
      CALL FUNCTION 'ZFUN_PO_LOG'
        EXPORTING
          output1 = ls_output
    
  •       output2 = out.
        .
    CATCH cx_ai_system_fault.
    

    ENDTRY.

    ENDMETHOD.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值