SAP HCM 组织与自定义组织事物一致性解决方案

news/2024/10/3 13:26:36 标签: 程序人生
 

1 背景

因为组织新增设计到hrp1000、hrp1001、hrp9xxx相关的表,而且这些信息类型创建是不同的函数组成,所以现在解决方案是每个单独的函数创建后,并不立刻更新数据库,等到一个指令后统一更新数据库,这个函数名是RH_UPDATE_DATABASE,参数设置成D. 首先是创建组织ID函数RH_OBJECT_CREATE,这里有个很重要的参数vtask ,如果参数设置成S是立刻更新数据库,参数设置成B是更新到缓存区;

其次就是RH_INSERT_INFTY函数,这个函数能做1001的设定,也能更新自定义的信息类型,前提条件也是把vtask设置成B,下面的代码是参考示例,没走循环,只是同样的代码复制两次,只是验证事物是不是一致,

*&---------------------------------------------------------------------*
*& Report ZTEST123
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest123.
DATA : BEGIN OF infty_tab OCCURS 20.
        INCLUDE STRUCTURE wplog.
DATA : END OF infty_tab.

DATA  BEGIN OF unit_innn OCCURS 1.
        INCLUDE STRUCTURE wplog.
DATA  END   OF unit_innn.
DATA  lv_objid TYPE p1000-objid.
CALL FUNCTION 'RH_OBJECT_CREATE'
  EXPORTING
*   LANGU               = SY-LANGU
    plvar               = '01'
    otype               = 'O'
*   EXT_NUMBER          = '00000000'
    short               = 'V001'
    stext               = 'V001'
    begda               = '20240101'
    endda               = '99991231'
*   OSTAT               = '1'
    vtask               = 'B'
*   GUID                =
*   KEEP_LUPD           = ' '
  IMPORTING
    objid               = lv_objid
  EXCEPTIONS
    text_required       = 1
    invalid_otype       = 2
    invalid_date        = 3
    error_during_insert = 4
    error_ext_number    = 5
    undefined           = 6
    OTHERS              = 7.
IF sy-subrc = 0.
  DATA:p9240 LIKE p9240.
  CLEAR p9240.

  p9240-otype = 'O'.
  p9240-plvar = '01'.
  p9240-istat = '1'.
  p9240-subty = ''.
  p9240-infty = '9240'.
  p9240-objid = lv_objid.
  p9240-begda =  '20240101'.
  p9240-endda = '99991231'.

  p9240-zhr_dwcj = '11'.
  p9240-zhr_dwlb = '1'.
  data: lt_wplog type standard table of wplog,
        ls_wplog type wplog.
  call method cl_hr_pnnnn_type_cast=>pnnnn_to_wplog
        exporting
          pnnnn =  p9240
        importing
          wplog = ls_wplog.
        append ls_wplog to lt_wplog.
  CALL FUNCTION 'RH_INSERT_INFTY'
    EXPORTING
      FCODE                     = 'INSE'
      vtask                     = 'B'
*     ORDER_FLG                 = 'X'
*     COMMIT_FLG                = 'X'
*     AUTHY                     = 'X'
*     PPPAR_IMP                 =
*     OLD_TABNR                 = ' '
*     REPID                     = ' '
*     FORM                      = ' '
*     KEEP_LUPD                 =
*     WORKF_ACTV                = 'X'
    tables
      innnn                     = lt_wplog.
*     ILFCODE                   =
*   EXCEPTIONS
*     NO_AUTHORIZATION          = 1
*     ERROR_DURING_INSERT       = 2
*     REPID_FORM_INITIAL        = 3
*     CORR_EXIT                 = 4
*     BEGDA_GREATER_ENDDA       = 5
*     OTHERS                    = 6
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  IF sy-subrc = 0.
    DATA:lt_p1001 TYPE TABLE OF p1001,
         ls_p1001 LIKE p1001.

    CLEAR:lt_p1001[],ls_p1001.
    ls_p1001-otype = 'O'.
    ls_p1001-infty = '1001'.
    ls_p1001-objid = lv_objid.
    ls_p1001-plvar = '01'.
    ls_p1001-rsign = 'A'.
    ls_p1001-relat =  '002'.
    ls_p1001-istat =  '1'.
    ls_p1001-begda =  '20240101'.
    ls_p1001-endda = '99991231'.
    ls_p1001-sclas = 'O'.
    ls_p1001-sobid =  '50000112'.
    APPEND ls_p1001 TO lt_p1001.

    CALL FUNCTION 'RH_INSERT_INFTY'
      EXPORTING
        fcode               = 'INSE'
        vtask               = 'B'
        commit_flg          = 'X'
      TABLES
        innnn               = lt_p1001[]
      EXCEPTIONS
        no_authorization    = 1
        error_during_insert = 2
        repid_form_initial  = 3
        corr_exit           = 4
        begda_greater_endda = 5
        OTHERS              = 6.

  ENDIF.



ENDIF.
  CLEAR lv_objid.

CALL FUNCTION 'RH_OBJECT_CREATE'
  EXPORTING
*   LANGU               = SY-LANGU
    plvar               = '01'
    otype               = 'O'
*   EXT_NUMBER          = '00000000'
    short               = 'V001'
    stext               = 'V001'
    begda               = '20240101'
    endda               = '99991231'
*   OSTAT               = '1'
    vtask               = 'B'
*   GUID                =
*   KEEP_LUPD           = ' '
  IMPORTING
    objid               = lv_objid
  EXCEPTIONS
    text_required       = 1
    invalid_otype       = 2
    invalid_date        = 3
    error_during_insert = 4
    error_ext_number    = 5
    undefined           = 6
    OTHERS              = 7.
IF sy-subrc = 0.

  CLEAR p9240.

  p9240-otype = 'O'.
  p9240-plvar = '01'.
  p9240-istat = '1'.
  p9240-subty = ''.
  p9240-infty = '9240'.
  p9240-objid = lv_objid.
  p9240-begda =  '20240101'.
  p9240-endda = '99991231'.

  p9240-zhr_dwcj = '12'.
  p9240-zhr_dwlb = '2'.
   CLEAR ls_wplog.
  call method cl_hr_pnnnn_type_cast=>pnnnn_to_wplog
        exporting
          pnnnn =  p9240
        importing
          wplog = ls_wplog.
        append ls_wplog to lt_wplog.
  CALL FUNCTION 'RH_INSERT_INFTY'
    EXPORTING
      FCODE                     = 'INSE'
      vtask                     = 'B'
*     ORDER_FLG                 = 'X'
*     COMMIT_FLG                = 'X'
*     AUTHY                     = 'X'
*     PPPAR_IMP                 =
*     OLD_TABNR                 = ' '
*     REPID                     = ' '
*     FORM                      = ' '
*     KEEP_LUPD                 =
*     WORKF_ACTV                = 'X'
    tables
      innnn                     = lt_wplog.
*     ILFCODE                   =
*   EXCEPTIONS
*     NO_AUTHORIZATION          = 1
*     ERROR_DURING_INSERT       = 2
*     REPID_FORM_INITIAL        = 3
*     CORR_EXIT                 = 4
*     BEGDA_GREATER_ENDDA       = 5
*     OTHERS                    = 6
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  IF sy-subrc = 0.


    CLEAR:lt_p1001[],ls_p1001.
    ls_p1001-otype = 'O'.
    ls_p1001-infty = '1001'.
    ls_p1001-objid = lv_objid.
    ls_p1001-plvar = '01'.
    ls_p1001-rsign = 'A'.
    ls_p1001-relat =  '002'.
    ls_p1001-istat =  '1'.
    ls_p1001-begda =  '20240101'.
    ls_p1001-endda = '99991231'.
    ls_p1001-sclas = 'O'.
    ls_p1001-sobid =  '50000112'.
    APPEND ls_p1001 TO lt_p1001.

    CALL FUNCTION 'RH_INSERT_INFTY'
      EXPORTING
        fcode               = 'INSE'
        vtask               = 'B'
        commit_flg          = 'X'
      TABLES
        innnn               = lt_p1001[]
      EXCEPTIONS
        no_authorization    = 1
        error_during_insert = 2
        repid_form_initial  = 3
        corr_exit           = 4
        begda_greater_endda = 5
        OTHERS              = 6.

  ENDIF.



ENDIF.

    CALL FUNCTION 'RH_UPDATE_DATABASE'
       EXPORTING
            vtask     = 'D'
       EXCEPTIONS
            corr_exit = 1
            OTHERS    = 2.

  IF sy-subrc GT 0.

    CALL FUNCTION 'RH_CLEAR_BUFFER'.
    CALL FUNCTION 'RH_CLEAR_PLOG_TAB'.

  ELSE.

  ENDIF.


http://www.niftyadmin.cn/n/5688453.html

相关文章

4S店4S店客户管理系统小程序(lw+演示+源码+运行)

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。手机具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要求的操作系统是非…

JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)

目录 Dialog对话框 介绍 使用 实际效果 Form表单 介绍 使用 实际效果 Dialog对话框 介绍 Dialog对话框&#xff1a;在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。 Dialog 对话框组件可以在保留当前页面信息的状态下弹出一个对话框&#xff0c;并…

SQL进阶技巧:统计各时段观看直播的人数

目录 0 需求描述 1 数据准备 2 问题分析 3 小结 如果觉得本文对你有帮助&#xff0c;那么不妨也可以选择去看看我的博客专栏 &#xff0c;部分内容如下&#xff1a; 数字化建设通关指南 专栏 原价99&#xff0c;现在活动价39.9&#xff0c;十一国庆后将上升至59.9&#…

python-鸡尾酒疗法/图像相似度/第n小的质数

一&#xff1a;鸡尾酒疗法 题目描述 鸡尾酒疗法&#xff0c;原指“高效抗逆转录病毒治疗”&#xff08;HAART&#xff09;&#xff0c;由美籍华裔科学家何大一于 1996 年提出&#xff0c;是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用可以减少单一用药产…

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信&#xff08;IPC&#xff09;。同一个进程是在同一块地址空间中的&#xff0c;在不同的函数与文件以变量进程传递&#xff0c;也可通过形参传递。2个不同进程处于不同的地址空间&#xff0c;要互相通信有难度&#xff08;内存隔离的原…

Jenkins pipeline配置示例

前提条件&#xff1a;已经安装Jenkins并能正常启动 如果Jenkins安装启动遇到问题可以参考&#xff1a; 1.创建pipeline 点击新建项目&#xff1a; 输入名称&#xff0c;选择pipeline&#xff1a; 进入配置页面&#xff0c;如果要配置GitHub Webhook要勾选&#xff1a;<fo…

Flume面试整理-Flume是什么?

Apache Flume 是一个分布式的、可靠的、高可用的数据收集和传输系统,专为从各种数据源(如日志文件、网络流)收集、聚合和传输大量数据而设计。它主要用于在大数据生态系统中,特别是Hadoop环境中,将数据从多个分散的来源实时地传输到一个集中的存储系统(如HDFS、HBase等)…

用户登录与信息管理:实现小程序登录与用户信息存储

用户登录与信息管理&#xff1a;实现小程序登录与用户信息存储 在现代的移动应用中&#xff0c;用户登录与信息管理是构建个性化用户体验的基础。小程序作为轻量级的应用形式&#xff0c;在简化开发流程的同时&#xff0c;也需要我们妥善管理用户的登录状态与用户信息。本文将…