SAP HCM 内部给号前提下导入时获取组织对象ID

       很多时候组织管理对象使用内部给号,当我们使用批量导入时,其实可以不需要指定对象的ID,可以生成后通过对象参数获取ID;

以下语句可以实现直接在创建成功后获取组织对象的ID;

        GET PARAMETER ID 'PON' FIELD   <OBJID>.

参考代码如下:

FORM frm_import_infty_1000 .
  DATA ls_return TYPE bapireturn1.
  DATA: l_msg TYPE string.
  DATA: l_index LIKE sy-tabix.
  DATA: ls_p1000 TYPE p1000.
  DATA: ls_p9101 TYPE p9101.
  DATA: ls_infotype     TYPE hripkey.
  DATA:ls_pppar    TYPE pppar_exep.
  DATA:ls_hrrhad_msg TYPE hrrhad_msg.
  DATA:lt_p9101 TYPE TABLE OF hrp9101,
       lw_p9101 TYPE hrp9101.
*
  FIELD-SYMBOLS: <fs_field>      TYPE any,
                 <fs_infty_data> TYPE any.
  REFRESH lt_p9101.
  SELECT * INTO TABLE lt_p9101 FROM hrp9101
WHERE begda <= sy-datum AND endda >= sy-datum.
  SORT lt_p9101 BY zywbm.

  IF <fs_excel_tab> IS NOT INITIAL.
    LOOP AT <fs_excel_tab> INTO <fs_excel_line>.
      CLEAR:ls_p1000,ls_p9101,ls_infotype.
**对象类型
      UNASSIGN  <fs_field>  .
      ASSIGN COMPONENT 'OTYPE' OF STRUCTURE <fs_excel_line> TO <fs_field> .
      IF sy-subrc = 0.
        MOVE <fs_field> TO ls_p1000-otype.
      ENDIF.
      IF ls_p1000-otype IS INITIAL.
        ls_p1000-otype = 'O'.
      ENDIF.
**对象开始日期
      UNASSIGN  <fs_field>  .
      ASSIGN COMPONENT 'BEGDA' OF STRUCTURE <fs_excel_line> TO <fs_field> .
      IF sy-subrc = 0.
        MOVE <fs_field> TO ls_p1000-begda.
      ENDIF.
**结束日期
      UNASSIGN  <fs_field>  .
      ASSIGN COMPONENT 'ENDDA' OF STRUCTURE <fs_excel_line> TO <fs_field> .
      IF sy-subrc = 0.
        MOVE <fs_field> TO ls_p1000-endda.
      ENDIF.
**简称
      UNASSIGN  <fs_field>  .
      ASSIGN COMPONENT 'SHORT' OF STRUCTURE <fs_excel_line> TO <fs_field> .
      IF sy-subrc = 0.
        MOVE <fs_field> TO ls_p1000-short.
      ENDIF.
**全称
      UNASSIGN  <fs_field>  .
      ASSIGN COMPONENT 'STEXT' OF STRUCTURE <fs_excel_line> TO <fs_field> .
      IF sy-subrc = 0.
        MOVE <fs_field> TO ls_p1000-stext.
      ENDIF.

      ls_p1000-plvar = '01'.
      ls_p1000-infty = '1000'.
      ls_p1000-istat = '1'.
      MOVE-CORRESPONDING ls_p1000 TO ls_infotype.
      CALL FUNCTION 'RH_PNNNN_MAINTAIN'
        EXPORTING
          act_fcode           = 'INSE'
          act_plvar           = ls_p1000-plvar
          act_otype           = ls_p1000-otype
          act_istat           = ls_p1000-istat
          act_objid           = ls_p1000-objid
          act_infty           = ls_p1000-infty
          act_begda           = ls_p1000-begda
          act_endda           = ls_p1000-endda
          act_pnnnn           = ls_p1000
          act_infotypekey     = ls_infotype
          suppress_dialog     = '2'
          act_pppar_exep      = ls_pppar
        IMPORTING
          act_pnnnn_out       = ls_p1000
          act_mess_info       = ls_hrrhad_msg
*   TABLES
*         ACT_HRTNNNN         =
        EXCEPTIONS
          infty_not_valid     = 1
          no_plvar            = 2
          object_not_defined  = 3
          otype_not_valid     = 4
          no_authority        = 5
          action_rejected     = 6
          no_gdate            = 7
          fcode_not_supported = 8
          OTHERS              = 9.

GET PARAMETER ID 'PON' FIELD ls_p1000-objid.

* Set successfull message.

      IF l_msg IS INITIAL.
        l_msg = TEXT-001.
      ENDIF.
*      ENDIF.

      IF l_msg IS NOT INITIAL.
        ASSIGN COMPONENT cns_field_msg OF STRUCTURE <fs_excel_line> TO
        <fs_field>.
        <fs_field> = l_msg.


* Set the background color to red if error.

        IF l_msg NE TEXT-001.
          ASSIGN COMPONENT cns_field_color OF STRUCTURE <fs_excel_line>
          TO <fs_field>.
          <fs_field> = cns_red_color.
        ENDIF.

        MODIFY <fs_excel_tab> FROM <fs_excel_line>.
      ENDIF.


* 更新进度栏

      l_index = l_index + 1.
      PERFORM frm_schedule USING l_index.

      CLEAR: ls_return, l_msg, <fs_infty_line>, <fs_excel_line>.
    ENDLOOP.
  ENDIF.
ENDFORM. " FRM_DISPATCH_INFTY_1000

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值