PM工单结算规则处理方法_SAPHOME的博客-程序员秘密

技术标签: types  import  im  buffer  parameters  ABAP  object  

 

PM工单结算规则处理方法

侯志宇

  2011-12-6

在订单中我们可以通过出口维护结算规则,这样可以避免用户手工维护结算规则

可以再IWO10027(生成用户定义的结算规则)出口中实现实现代码如下:

*&---------------------------------------------------------------------*
*&  包括                ZXWOCU24
*&---------------------------------------------------------------------*
*
*增强名称:试点-工单建立后,保存时直接填入一个虚拟的结算规则。(结算到科目9999999999)
*增强内容:工单保存时,全部自动赋给一个虚拟的结算规则:科目9999999999

    DATA: S_PMDFU TYPE PMDFU.
    S_PMDFU-KONTY = 'SK'."G/L = SK
    S_PMDFU-FDIND = '9999999999'.
    S_PMDFU-PERBZ = 'GES'."FUL
    S_PMDFU-AQZIF = 0.
    S_PMDFU-PROZS = 100.
    APPEND S_PMDFU TO PMDFU_TAB.
 .

IWO10027正常情况下在IW31中及其在IW32中单击结算规则选择默认时调用;

但是由于某些未知原因也可能导致此出口更新失败,这样我们就找了另一种更新结算规则的方法来进行补救,我将此方法写在IWO10009 (PM订单:对于'保存'事件的客户检查)出口中进行处理,在EXIT_SAPLCOIH_009中代码如下:

*>>>modify begin  2011.12.06*************************************
*修改方案:在非创建工单时如果还没有维护结算规则,就自动生成结算规则
*修改人:侯志宇
**************************************************
* 如果还没有维护结算规则,就自动生成结算规则 *
**************************************************
call function 'STATUS_CHECK'
  exporting
*   BYPASS_BUFFER           = ' '
*   CLIENT                  = SY-MANDT
    OBJNR                   = CAUFVD_IMP-OBJNR
    STATUS                  = 'I0028'"SETC in table TJ02T 结算规则己维护
 exceptions
   OBJECT_NOT_FOUND        = 1
   STATUS_NOT_ACTIVE       = 2
   others                  = 3.

if SY-SUBRC = 2 and CAUFVD_IMP-OBJNR+0(2) <> 'TM'."不是新建末保存的订单 STATUS_NOT_ACTIVE,

**************************************************
* 自动生成结算规则 开始 *
**************************************************
*************************
* Data Declaration *
*************************
  data IT_OBJNR type standard table of IONRB with header line.

  data IT_COBRA type standard table of COBRA with header line.
  data IT_COBRB type standard table of COBRB with header line.

*.COBRA-BUFFER (SEE FM KOBS)
  types:  begin of TY_COBRA_BUF.
          include structure COBRA.
  types:  UFLAG like DKOBR-UPD_FLAG,
          end of TY_COBRA_BUF.

*.COBRB-PUFFER MIT ?NDERUNGSFLAG (SEE FM KOBS)
  types:  begin of TY_COBRB_BUF.
          include structure COBRB.
  types:  UFLAG like DKOBR-UPD_FLAG,
          end of TY_COBRB_BUF.

  data L_MEM_COBRA type standard table of TY_COBRA_BUF with header line.
  data L_MEM_COBRB type standard table of TY_COBRB_BUF with header line.

*************************
* Data Process *
*************************

  IT_OBJNR-OBJNR = CAUFVD_IMP-OBJNR.
  append IT_OBJNR.

  call function 'K_SRULE_PRE_READ'
    exporting
      I_PFLEGE = ' '
    tables
      T_SENDER_OBJNR = IT_OBJNR
*   T_COBRA =
    exceptions
      WRONG_PARAMETERS = 1
      others = 2.

  call function 'K_SETTLEMENT_RULE_EXISTENCE'
    exporting
      OBJNR                = IT_OBJNR-OBJNR
*   FLG_LOCAL            = ' '
* IMPORTING
*   E_COBRA              =
   exceptions
     RULE_NOT_FOUND       = 1
     others               = 2.

  if SY-SUBRC = 1."如果没有结算规则,就创建

    call function 'K_SRULE_CREATE'
      exporting
        I_OBJNR                   = IT_OBJNR-OBJNR
*     I_CHECK_ONLY_LOCAL        = ' '
*   IMPORTING
*     E_COBRA                   =
     exceptions
       RULE_ALREADY_EXISTS       = 1
       others                    = 2.

  endif."如果没有结算规则,就创建


  call function 'K_SETTLEMENT_RULE_GET'
   exporting
     OBJNR           = IT_OBJNR-OBJNR
*   X_ALL           = ' '
    tables
      E_COBRA         = IT_COBRA
      E_COBRB         = IT_COBRB
   exceptions
     NOT_FOUND       = 1
     others          = 2.

  call function 'K_SRULE_EXPORT_IMPORT'
    exporting
      I_MODE     = 'EX'
    exceptions
      WRONG_MODE = 1
      others     = 2.

  import L_MEM_COBRA L_MEM_COBRB from memory id 'K_SRULE'.

* 修改 IT_COBRA, IT_COBRB.
  clear:L_MEM_COBRB,L_MEM_COBRB[].

  L_MEM_COBRB-OBJNR = IT_OBJNR-OBJNR.
  L_MEM_COBRB-LFDNR = 1.
  L_MEM_COBRB-PERBZ = 'GES'."FUL "结算类型
*  L_MEM_COBRB-URZUO = 'COS'. "原始分配
  L_MEM_COBRB-PROZS = '100'. "百分比
  L_MEM_COBRB-DFREG = 'PMU'. "缺省规则
  L_MEM_COBRB-KONTY = 'SK'."G/L = SK "科目分配类别
  L_MEM_COBRB-KOKRS = 'SEC0'. "成本控制范围
  L_MEM_COBRB-BUKRS = CAUFVD_IMP-BUKRS. "公司代码
  L_MEM_COBRB-HKONT = '9999999999'. "总帐科目
  L_MEM_COBRB-KOSTL = CAUFVD_IMP-KOSTV. "成本中心
  concatenate L_MEM_COBRB-KONTY  L_MEM_COBRB-BUKRS L_MEM_COBRB-HKONT into L_MEM_COBRB-REC_OBJNR1.
  L_MEM_COBRB-EXTNR = 1.
  L_MEM_COBRB-UFLAG = 'I'.

  append L_MEM_COBRB.

*  L_MEM_COBRB-OBJNR = IT_OBJNR-OBJNR.
*  L_MEM_COBRB-LFDNR = 2.
*  L_MEM_COBRB-PERBZ = 'GES'. "结算类型
*  L_MEM_COBRB-URZUO = 'REV'. "原始分配
*  L_MEM_COBRB-PROZS = '100'. "百分比
*  L_MEM_COBRB-DFREG = 'PMU'. "缺省规则
*  L_MEM_COBRB-KONTY = 'SK'. "科目分配类别
*  L_MEM_COBRB-KOKRS = '3333'. "成本控制范围
*  L_MEM_COBRB-BUKRS = CAUFVD_IMP-BUKRS. "公司代码
*  L_MEM_COBRB-HKONT = '6001010611'. "总帐科目
*  L_MEM_COBRB-KOSTL = CAUFVD_IMP-KOSTV. "成本中心
*  L_MEM_COBRB-PRCTR = CAUFVD_IMP-PRCTR. "利润中心
*  L_MEM_COBRB-REC_OBJNR1 = 'SK31106001010611'. "结算接收方的对象号
*  L_MEM_COBRB-EXTNR = 2.
*  L_MEM_COBRB-UFLAG = 'I'.
*
*  append L_MEM_COBRB.

  export L_MEM_COBRA L_MEM_COBRB to memory id 'K_SRULE'.


  call function 'K_SETTLEMENT_RULE_REFRESH'
    exporting
      OBJNR = IT_OBJNR-OBJNR.

  call function 'K_SRULE_EXPORT_IMPORT'
    exporting
      I_MODE     = 'IM'
    exceptions
      WRONG_MODE = 1
      others     = 2.

  call function 'K_SETTLEMENT_RULE_CHECK'
    exporting
*   ADD_PARA                = ' '
*   APROF                   = ' '
      OBJNR                   = IT_OBJNR-OBJNR
*   TEST_BUKRS              = ' '
*   TEST_KOKRS              = ' '
*   RWIN_AUFRUF             = 'X'
      I_PFLEGE                = 'X'"you can change the rule
*   IVPRO                   = ' '
*   XREVENUE                = ' '
*   XFUNCSAVE               = ' '
* IMPORTING
*   XSAVE                   =
   exceptions
     ERROR_OCCURRED          = 1
     NO_RULE_FOR_OBJNR       = 2
     WARNING_OCCURRED        = 3
     INTERNAL_PROBLEMS       = 4
     others                  = 5.

  if SY-SUBRC = 0."保存结算规则,设置状态 SETC 结算规则己维护

    call function 'K_SETTLEMENT_RULE_SAVE'
      exporting
        DIALOG            = ''
        OBJNR             = IT_OBJNR-OBJNR
        I_STATUS_UPDATE   = 'X'
      exceptions
        NO_RULE_FOR_OBJNR = 1
        others            = 2.

    data STATUS type standard table of JSTAT with header line.
    STATUS-STAT = 'I0028'."SETC in table TJ02T 结算规则己维护
    STATUS-INACT = ''.
    append STATUS.

    call function 'STATUS_CHANGE_INTERN'
      exporting
*     CHECK_ONLY                = ' '
*     CLIENT                    = SY-MANDT
        OBJNR                     = IT_OBJNR-OBJNR
*     ZEILE                     = ' '
*     SET_CHGKZ                 =
*   IMPORTING
*     ERROR_OCCURRED            =
*     OBJECT_NOT_FOUND          =
*     STATUS_INCONSISTENT       =
*     STATUS_NOT_ALLOWED        =
      tables
        STATUS                    = STATUS
     exceptions
       OBJECT_NOT_FOUND          = 1
       STATUS_INCONSISTENT       = 2
       STATUS_NOT_ALLOWED        = 3
       others                    = 4.
    if SY-SUBRC = 0.
      call function 'STATUS_UPDATE_ON_COMMIT'.
    endif.
  endif.
**************************************************
* 自动生成结算规则 结束 *
**************************************************
endif.
*>>>>END begin  2011.12.06

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SAPHOME/article/details/7046249

智能推荐

tkinter 笔记 checkbutton 勾选项 (莫烦python笔记)_UQI-LIUWJ的博客-程序员秘密

和前面radiobutton的区别在于,radiobutton 各选项只能勾选一个,checkbutton可以勾选多个,也可以不勾选1 主体框架还是一样的import tkinter as tkwindow = tk.Tk()#创建窗口window.title('my window')#窗口标题window.geometry('500x200')#窗口大小2 定义标签和之前一样l=tk.Label(bg='blue',text=' ')l.pa...

第38篇 一对多自由控制语音(十八)及PHP实例- AJAXRSS 阅读器_编个球编个大气球的博客-程序员秘密

关键词:一对多自由控制语音, PHP实例- AJAX RSS阅读器一、一对多自由控制语音1.1 在demos2下面https://192.168.1.14:9001/demos2/StreamHasData.html1.2 代码分析   现在有一个想法是:老师端,学生端用的按钮不一样,老师端用button1,button2,学生端用button3,button4,看看会不会解除

瞥一瞥AI,撩一撩算法,顺便送几本书_风度78的博客-程序员秘密

风和日丽的午后,你走在马路上。一个人型机器人迎面走来,点头,微笑,挥手,和你擦肩而过。你回头望去,街头绿灯下,机器人正小跑穿过人行横道,步伐轻盈,体态自然。机器人渐行渐远……你停下脚步,浮...

numpy-matrix[, : ]矩阵逗号冒号用法以及np.sum的axis参数_小孟Tec的博客-程序员秘密

在看机器学习实战时,kNN里面有段关于矩阵的处理,那简直666啊。。。查了一下利用Python进行数据分析 ,发现里面没有详细提到此用法。故简单做一个总结:具体代码如下:import numpy as npfor i in range(numTestVecs): #前numTestVecs个数据作为测试集,后m-numTestVecs个数据作为训练集 classif...

HI HAO A _德勤con digital_liujiqiangxiaoye的博客-程序员秘密

真正的爱情,不是一见钟情,而是日久生情;<br />真正的缘份,不是上天的安排,而是你的主动;<br />真正的自卑,不是你不优秀,而是你把她想得太优秀;<br />真正的关心,不是你认为好的就要求她改变,而是她的改变你是第一个发现的;<br />真正的矛盾,不是她不理解你,而是你不会宽容她;<br />真正的可悲,不是你已不爱她,而是你不爱她却还骗着爱她;<br />真正的风度,不是分手时潇洒地向她挥手,而是分手后她有困难时你热情的伸手;<br />真正的遗忘,不是把一切关于她的东西砸碎,而是心里真正放下

剑指 Offer 29. 顺时针打印矩阵(逻辑)1_秋雨行舟的博客-程序员秘密

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]解法一:逻辑就是循环遍历,没啥好说的class Solution { public int[] spiralOrder.

随便推点

硬盘在计算机内部,计算机硬盘内部结构如图所示,读写磁头在计算机的指令下移动到某个位置,硬盘盘面在电机的带动下......_白沙泉的博客-程序员秘密

计算机硬盘内部结构如图所示,读写磁头在计算机的指令下移动到某个位置,硬盘盘面在电机的带动下高速旋转,通过读写磁头读写下方磁盘上的数据.磁盘上分为若干个同心环状的磁道,每个磁道按圆心角等分为18个扇区.现在普通的家用电脑中的硬盘的转速通常有5400r/min和7200r/min两种,硬盘盘面的大小相同,则( )A.磁头的位置相同时,7200r/min的硬盘读写数据更快B.对于某种硬盘,磁头离盘面中心...

Node.js + Web Socket 打造即时聊天程序_李明阳的博客的博客-程序员秘密

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术。像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端。瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为’前后端’。图片来自G+本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是’嗨

利用函数实现strlen函数的功能。_攻城狮晨哲的博客-程序员秘密

利用函数实现strlen函数的功能。#include &lt;stdio.h&gt;#include &lt;string.h&gt;size_t mstrlen(const char *s){ if(s == NULL){ return 0; } int len = 0; while(*s++ != '\0'){ len++; } return len;}int main(int argc, const

python-pdf的去水印操作_python 去除pdf水印_KjPrime的博客-程序员秘密

python-特殊pdf的去水印操作为什么做出这个?原理特色成果安装依赖代码想法参考文献为什么做出这个?就是有时候从网上下载的资料中的pdf有水印,看着不舒服。比如说我从网上下载的试卷,然后去打印店打印,打印之后水印看着很不舒服,而去水印wps要会员,而我是一个程序员,为什么不做一个呢,何乐而不为。虽然最后是做出来的,但是还是有限制。原理把pdf转化为图片,然后将图片去水印。图片去水印,是又条件限制的,必须水印的颜色和pdf中文字的颜色的rgb相差很大,然后把水印的颜色改变成背景颜色。

Flutter构建正式包出错解决方案Execution failed for task ‘:app:lintVitalRelease‘. > Could not resolve all art_execution failed for task ':app:lintvitalanalyzere_wapchief的博客-程序员秘密

FAILURE: Build failed with an exception.What went wrong:Execution failed for task ‘:app:lintVitalRelease’.Could not resolve all artifacts for configuration ‘:app:debugRuntimeClasspath’.Failed to transform libs.jar to match attributes {artifactType.

计算机玩什么游戏都闪退,电脑玩原神闪退怎么办 原神PC版闪退解决方法_华夏英灵的博客-程序员秘密

原神很快就要在多平台公测了,其中不仅有安卓和iOS平台,还有PC、PS4平台,一些小伙伴们就打算在电脑上体验这款游戏,不过如果电脑玩原神闪退怎么办呢,这里就来分享一下原神PC版闪退的解决方法。 1、配置问题小伙伴们在体验游戏的过程中,如果出现了闪退的情况,很可能就是电脑配置不对,没有达到游戏所要求的的基础配置,小伙伴们可以检查一下自己电脑的配置。如果确定是配置上不适合的话,就需要更换一套配置符合的...

推荐文章

热门文章

相关标签