很多时候组织管理对象使用内部给号,当我们使用批量导入时,其实可以不需要指定对象的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