ML81N服务条目表创建审批

ML81N服务条目表创建

ME23N创建服务类采购订单
![在这里插入图片描述](https://img-blog.csdnimg.cn/e457e3a87b1a416193cec33348c9ce31.png

ML81N根据采购订单明细创建服务条目表
在这里插入图片描述
保存后采购订单会生成物料凭证
在这里插入图片描述
删除
在这里插入图片描述

创建

参考ESLL表,需要区分父包,子包;其中ls_esll-pln_pckg需要根据EKPO关联ESSR关联ESLL获取到原始包装编号

    LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_alv>) WHERE sel = 'X' AND icon <> '@08@'.
      CLEAR:<fs_alv>-icon,<fs_alv>-msg.
      IF sy-ucomm = 'ZRUN' AND <fs_alv>-test = ''.
        <fs_alv>-msg = TEXT-035.
        <fs_alv>-icon = '@0A@'.
        CONTINUE.
      ENDIF.
      AT NEW ebelp.
        ls_header-pckg_no = '1'.
        ls_header-po_number = <fs_alv>-ebeln.
        ls_header-po_item = <fs_alv>-ebelp.
        ls_header-fin_entry = <fs_alv>-final.

        ls_esll-pckg_no = ls_header-pckg_no.
        lv_line_no = lv_line_no + 1.
        ls_esll-subpckg_no = lv_line_no + 1.
        ls_esll-line_no = lv_line_no .
        CLEAR:ls_esll-ext_line .
        ls_esll-outl_ind = 'X'.
        APPEND ls_esll TO lt_esll.
      ENDAT.
      lv_serial_no = lv_serial_no + 1.
      ls_eskn-serial_no = lv_serial_no.
      ls_eskn-costcenter = <fs_alv>-kostl.
      APPEND ls_eskn TO lt_eskn.

      ls_esll-pckg_no = ls_header-pckg_no + 1.
      lv_line_no = lv_line_no + 1.
      ls_esll-line_no = lv_line_no.
      lv_extrow = lv_extrow + 10.
      ls_esll-ext_line = lv_extrow .
      ls_esll-quantity = <fs_alv>-menge.
      ls_esll-short_text = <fs_alv>-ktext1.
      ls_esll-userf1_txt = <fs_alv>-userf1_txt.
      ls_esll-pln_pckg = <fs_alv>-packno.
      ls_esll-pln_line = <fs_alv>-introw.
      CLEAR:ls_esll-outl_ind,ls_esll-subpckg_no.
      APPEND ls_esll TO lt_esll.

      ls_eskl-pckg_no = ls_header-pckg_no + 1.
      ls_eskl-line_no = lv_line_no.
      ls_eskl-serial_no = lv_serial_no.
      APPEND ls_eskl TO lt_eskl.

      AT END OF ebelp.

        CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
          EXPORTING
            entrysheetheader            = ls_header
            testrun                     = lv_test
            no_commit                   = lv_no_commit
          IMPORTING
            entrysheet                  = lv_sheet
          TABLES
            entrysheetaccountassignment = lt_eskn
            entrysheetservices          = lt_esll
            entrysheetsrvaccassvalues   = lt_eskl
            return                      = lt_return.
        IF lv_sheet IS NOT INITIAL.
          IF sy-ucomm = 'ZTEST'.
            gs_alv-test = 'X'.
            CLEAR:gs_alv-icon.
            gs_alv-msg = TEXT-036.
          ENDIF.
          IF sy-ucomm = 'ZRUN'.
            gs_alv-icon = '@08@'.
            gs_alv-msg = TEXT-033 && lv_sheet.
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
              EXPORTING
                wait = 'X'.
          ENDIF.
        ELSE.
          LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
            lv_msg = lv_msg && ls_return-message.
          ENDLOOP.
          gs_alv-icon = '@0A@'.
          gs_alv-msg = TEXT-034 && lv_msg.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.

        MODIFY gt_alv  FROM gs_alv TRANSPORTING test icon msg WHERE ebeln = <fs_alv>-ebeln AND ebelp = <fs_alv>-ebelp.
        CLEAR:gs_alv,ls_header,lt_eskn,lt_esll,lt_eskl,lt_return,lv_serial_no,lv_line_no,lv_extrow,lv_msg.
        IF sy-ucomm = 'ZRUN'.
          WAIT UP TO '0.5' SECONDS.
        ENDIF.
      ENDAT.

      CLEAR:ls_eskn,ls_esll,ls_eskl.
    ENDLOOP.

审批

审批时默认使用创建日期进行过账,跨月审批会报错,需要修改过账日期

在这里插入图片描述

调用BAPI需要传参过账日期,参考note:1240639

在这里插入图片描述

    SET PARAMETER ID 'SESPOSTINGDATE' FIELD sy-datum.
    CALL FUNCTION 'BAPI_ENTRYSHEET_RELEASE'
      EXPORTING
        entrysheet     = i_business_key+0(10)
        rel_code       = 'F2'
        no_commit_work = ' '
      TABLES
        return         = gt_return.

取消审批

    CALL FUNCTION 'BAPI_ENTRYSHEET_RESET_RELEASE'
      EXPORTING
        entrysheet = i_business_key+0(10)
        rel_code   = 'F1'
      TABLES
        return     = gt_return.
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值