Difference between revisions of "SAP HCM OM"
From SapWiki
(9 intermediate revisions by the same user not shown) | |||
Line 157: | Line 157: | ||
ENDFORM. "delete_infotype | ENDFORM. "delete_infotype | ||
− | + | . | |
+ | |||
PERFORM delete_infotype USING ls_p9005 | PERFORM delete_infotype USING ls_p9005 | ||
CHANGING l_subrc. | CHANGING l_subrc. | ||
Line 281: | Line 282: | ||
RETURN. | RETURN. | ||
ENDIF. | ENDIF. | ||
+ | |||
+ | ===Crear Relación=== | ||
+ | <nowiki>FORM relation_ CHANGING p_subrc. | ||
+ | DATA lt_relation TYPE hri1001_tab. | ||
+ | DATA ls_relation LIKE LINE OF lt_relation. | ||
+ | DATA l_subty LIKE ls_relation-relat. | ||
+ | |||
+ | DATA: l_objid TYPE p1000-objid, | ||
+ | l_otype TYPE p1000-otype. | ||
+ | DATA l_like(20). | ||
+ | |||
+ | CLEAR ls_relation. | ||
+ | ls_relation-mandt = sy-mandt. | ||
+ | ls_relation-plvar = '01'. | ||
+ | ls_relation-otype = g_otype. | ||
+ | ls_relation-objid = p1000-objid. | ||
+ | ls_relation-infty = '1001'. | ||
+ | ls_relation-istat = '1'. | ||
+ | ls_relation-rsign = 'B'. | ||
+ | ls_relation-relat = l_subty. "'Z01'. | ||
+ | ls_relation-begda = p1000-begda. | ||
+ | ls_relation-endda = p1000-endda. | ||
+ | ls_relation-sclas = p_otype. | ||
+ | ls_relation-sobid = p_objid. | ||
+ | |||
+ | APPEND ls_relation TO lt_relation. | ||
+ | |||
+ | PERFORM crea_relacion USING lt_relation CHANGING p_subrc. | ||
+ | if p_subrc = 0. | ||
+ | CALL FUNCTION 'RH_UPDATE_DATABASE' | ||
+ | EXPORTING | ||
+ | vtask = 'D' | ||
+ | commit_flg = 'X' "VWMCOMMIT | ||
+ | clear_buffer = ' ' | ||
+ | EXCEPTIONS | ||
+ | corr_exit = 04. | ||
+ | endif. | ||
+ | |||
+ | ENDFORM. "relation_fiscalizacion | ||
+ | |||
+ | FORM crea_relacion USING p_relation TYPE hri1001_tab CHANGING p_subrc. | ||
+ | |||
+ | CALL FUNCTION 'RH_RELATION_WRITE' | ||
+ | EXPORTING | ||
+ | vtask = 'B' | ||
+ | * KEEP_LUPD = ' ' | ||
+ | TABLES | ||
+ | relation = p_relation | ||
+ | * ERR_RELATION = | ||
+ | EXCEPTIONS | ||
+ | no_authority = 1 | ||
+ | relation_not_allowed = 2 | ||
+ | object_not_found = 3 | ||
+ | wrong_date_format = 4 | ||
+ | time_not_valid = 5 | ||
+ | error_during_insert = 6 | ||
+ | undefined = 7 | ||
+ | OTHERS = 8 | ||
+ | . | ||
+ | |||
+ | p_subrc = sy-subrc. | ||
+ | |||
+ | ENDFORM. "crea_relacion</nowiki> | ||
+ | ===Ayuda Busqueda para Objeto=== | ||
+ | ====En dynpro (include MH5A0I50)==== | ||
+ | <nowiki> | ||
+ | module objid_request_5000 input. | ||
+ | self_repid = sy-repid. | ||
+ | self_dynnr = sy-dynnr. | ||
+ | |||
+ | call function 'RH_OBJID_REQUEST' | ||
+ | exporting | ||
+ | plvar = pphdr-plvar | ||
+ | otype = pphdr-otype | ||
+ | dynpro_repid = self_repid | ||
+ | dynpro_dynnr = self_dynnr | ||
+ | dynpro_plvarfield = 'PPHDR-PLVAR' | ||
+ | dynpro_otypefield = 'PPHDR-OTYPE' | ||
+ | dynpro_searkfield = 'PM0D1-SEARK' | ||
+ | importing | ||
+ | sel_object = f4_objec | ||
+ | exceptions | ||
+ | cancelled = 1 | ||
+ | wrong_condition = 2 | ||
+ | nothing_found = 3 | ||
+ | illegal_mode = 4 | ||
+ | internal_error = 5 | ||
+ | others = 6. | ||
+ | |||
+ | if sy-subrc = 0. | ||
+ | move f4_objec-realo to pm0d1-seark. | ||
+ | if pphdr-otype = 'K'. | ||
+ | clear pm0d1-seark+10(2). | ||
+ | endif. | ||
+ | endif. | ||
+ | endmodule. "objid_request_5000 INPUT | ||
+ | </nowiki> | ||
+ | |||
+ | En Dynpro | ||
+ | <nowiki>process on value-request. | ||
+ | field pm0d1-seark module objid_request_5000. </nowiki> | ||
+ | |||
+ | ====En reporte (ver programa S_HRPA_QA_MERGE_JOB_FAMILY)==== | ||
+ | <nowiki> | ||
+ | FORM get_object_f4 USING lp_otype TYPE otype | ||
+ | lp_field TYPE char50. | ||
+ | |||
+ | DATA : lw_object TYPE objec, | ||
+ | lt_dynfield TYPE TABLE OF dynpread, | ||
+ | lw_dynfield LIKE LINE OF lt_dynfield. | ||
+ | |||
+ | FIELD-SYMBOLS <fs_field> TYPE any. | ||
+ | |||
+ | CALL FUNCTION 'RH_OBJID_REQUEST' | ||
+ | EXPORTING | ||
+ | plvar = c_01 | ||
+ | otype = lp_otype | ||
+ | seark = '*' | ||
+ | orgbeg = p_begda | ||
+ | orgend = p_begda | ||
+ | IMPORTING | ||
+ | sel_object = lw_object | ||
+ | EXCEPTIONS | ||
+ | cancelled = 1 | ||
+ | wrong_condition = 2 | ||
+ | nothing_found = 3 | ||
+ | internal_error = 4 | ||
+ | illegal_mode = 5 | ||
+ | OTHERS = 6. | ||
+ | IF sy-subrc IS INITIAL. | ||
+ | ASSIGN (lp_field) TO <fs_field>. | ||
+ | <fs_field> = lw_object-objid. | ||
+ | IF lp_field EQ 'P_SOBID'. | ||
+ | p_shortt = lw_object-short. | ||
+ | p_stextt = lw_object-stext. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_SHORTT'. | ||
+ | lw_dynfield-fieldvalue = p_shortt. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_STEXTT'. | ||
+ | lw_dynfield-fieldvalue = p_stextt. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | ELSEIF lp_field EQ 'P_JOBF1'. | ||
+ | p_jobf1s = lw_object-short. | ||
+ | p_jobf1l = lw_object-stext. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_JOBF1S'. | ||
+ | lw_dynfield-fieldvalue = p_jobf1s. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_JOBF1L'. | ||
+ | lw_dynfield-fieldvalue = p_jobf1l. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | ELSEIF lp_field EQ 'P_JOBF2'. | ||
+ | p_jobf2s = lw_object-short. | ||
+ | p_jobf2l = lw_object-stext. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_JOBF2S'. | ||
+ | lw_dynfield-fieldvalue = p_jobf2s. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | |||
+ | lw_dynfield-fieldname = 'P_JOBF2L'. | ||
+ | lw_dynfield-fieldvalue = p_jobf2l. | ||
+ | APPEND lw_dynfield TO lt_dynfield. | ||
+ | |||
+ | ENDIF. | ||
+ | CALL FUNCTION 'DYNP_VALUES_UPDATE' | ||
+ | EXPORTING | ||
+ | dyname = sy-cprog | ||
+ | dynumb = sy-dynnr | ||
+ | TABLES | ||
+ | dynpfields = lt_dynfield | ||
+ | EXCEPTIONS | ||
+ | invalid_abapworkarea = 1 | ||
+ | invalid_dynprofield = 2 | ||
+ | invalid_dynproname = 3 | ||
+ | invalid_dynpronummer = 4 | ||
+ | invalid_request = 5 | ||
+ | no_fielddescription = 6 | ||
+ | undefind_error = 7 | ||
+ | OTHERS = 8. | ||
+ | IF sy-subrc IS NOT INITIAL. | ||
+ | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno | ||
+ | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. | ||
+ | ENDIF. | ||
+ | |||
+ | ELSE. | ||
+ | IF lp_field EQ 'P_SOBID'. | ||
+ | CLEAR : p_shortt, p_stextt. | ||
+ | ELSEIF lp_field EQ 'P_JOBF1'. | ||
+ | CLEAR : p_jobf1s, p_jobf1l. | ||
+ | ELSEIF lp_field EQ 'P_JOBF2'. | ||
+ | CLEAR : p_jobf2s, p_jobf2l. | ||
+ | ENDIF. | ||
+ | ENDIF. | ||
+ | |||
+ | ENDFORM. " GET_OBJECT_F4 | ||
+ | |||
+ | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_sobid. | ||
+ | PERFORM get_object_f4 USING c_fn 'P_SOBID'. | ||
+ | |||
+ | </nowiki> |
Latest revision as of 20:42, 9 April 2021
Contents
Transacciones
- PP01 Actual.datos plan (guiado por menú)
- PO10 Actualizar unidad de organización
- PO03 Actualizar función
- PO13 Actualizar posición
- PO01 Actualizar puesto de trabajo
- Reportes
- RHGRENZ0 - Delimitar objetos
- RHCHECKRELATIONS - Borrado de enlaces sin objetos existentes
- RHCHECK1 - Verif.consistencia base datos
FM OM Infotypes
RH_OBJECT_CREATE
CALL FUNCTION 'RH_OBJECT_CREATE' EXPORTING plvar = '01' otype = 'S' short = ls_p1000-short stext = ls_p1000-stext begda = p_begda endda = p_endda vtask = 'B' IMPORTING objid = p_objid_new 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. ROLLBACK WORK. p_subrc = 7. RETURN. ENDIF.
RH_DELETE_OBJECT
FORM borrar_relaciones USING p_objid. DATA: lt_p1001 TYPE TABLE OF p1001 WITH HEADER LINE, l_objid TYPE p1000-objid. CALL FUNCTION 'RH_READ_INFTY' EXPORTING plvar = '01' otype = 'ZT' objid = p_objid infty = '1001' istat = '1' TABLES innnn = lt_p1001 * OBJECTS = EXCEPTIONS all_infty_with_subty = 1 nothing_found = 2 no_objects = 3 wrong_condition = 4 wrong_parameters = 5 OTHERS = 6. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. LOOP AT lt_p1001 WHERE sclas = 'ZI'. MOVE lt_p1001-sobid TO l_objid. CALL FUNCTION 'RH_DELETE_OBJECT' EXPORTING plvar = '01' otype = 'ZI' objid = l_objid vtask = 'B' EXCEPTIONS error_during_delete = 1 no_authorization = 2 corr_exit = 3 buffer_upd_with_foreign_data = 4 OTHERS = 5. ENDLOOP. CALL FUNCTION 'RH_UPDATE_DATABASE' EXPORTING vtask = 'D' commit_flg = 'X' "VWMCOMMIT clear_buffer = ' ' EXCEPTIONS corr_exit = 04. ENDFORM. " BORRAR_
RH_INSERT_INFTY
FORM insert_infty USING p_p TYPE any CHANGING p_subrc TYPE sy-subrc. DATA: wplog_record_tab TYPE TABLE OF wplog, wplog_record TYPE wplog. FIELD-SYMBOLS <wplog> TYPE c. ASSIGN p_p TO <wplog> CASTING. wplog_record = <wplog>. APPEND wplog_record TO wplog_record_tab. CALL FUNCTION 'RH_INSERT_INFTY' EXPORTING vtask = 'B' TABLES innnn = wplog_record_tab EXCEPTIONS no_authorization = 1 error_during_insert = 2 repid_form_initial = 2 corr_exit = 2 OTHERS = 2. p_subrc = sy-subrc. ENDFORM. "insert_infty PERFORM insert_infty USING ls_P1010 CHANGING l_subrc. IF l_subrc <> 0. ROLLBACK WORK. p_subrc = 5. RETURN. ENDIF.
RH_DELETE_INFTY
FORM delete_infotype USING p_p TYPE any CHANGING p_subrc TYPE sy-subrc. DATA: wplog_record_tab TYPE TABLE OF wplog, wplog_record TYPE wplog. FIELD-SYMBOLS <wplog> TYPE c. ASSIGN p_p TO <wplog> CASTING. wplog_record = <wplog>. APPEND wplog_record TO wplog_record_tab. CALL FUNCTION 'RH_DELETE_INFTY' EXPORTING vtask = 'B' TABLES innnn = wplog_record_tab EXCEPTIONS error_during_delete = 1 no_authorization = 2 delete_first_record = 3 corr_exit = 4 OTHERS = 5. p_subrc = sy-subrc. ENDFORM. "delete_infotype
.
PERFORM delete_infotype USING ls_p9005 CHANGING l_subrc. IF l_subrc <> 0. ROLLBACK WORK. p_subrc = 5. RETURN. ENDIF.
Leer Descripción de Objeto RH_OBJECT_DESCRIPTION_READ_2
FORM read_description USING p_objid p_otype p_begda p_endda p_subty p_seqnr CHANGING p_longtext TYPE wcb_tdline_tab. DATA: i1002 TYPE TABLE OF p1002, i1002_exp TYPE TABLE OF p1002_exp WITH HEADER LINE, objects TYPE TABLE OF hrobject WITH HEADER LINE. DATA ls_longtext LIKE LINE OF p_longtext. objects-plvar = c_actual. objects-otype = p_otype. objects-objid = p_objid. APPEND objects. * read appraisal information and rating description CALL FUNCTION 'RH_OBJECT_DESCRIPTION_READ_2' EXPORTING * LANGU = SY-LANGU begda = p_begda endda = p_endda subty = p_subty TABLES i1002 = i1002 i1002_exp = i1002_exp OBJECTS = OBJECTS exceptions nothing_found = 1 infty_empty = 2 undefined = 3 OTHERS = 4. IF sy-subrc <> 0. CLEAR: i1002, i1002_exp. ENDIF. LOOP AT i1002_exp WHERE subty <> p_subty OR seqnr <> p_seqnr OR begda <> p_begda OR endda <> p_endda. DELETE i1002_exp INDEX sy-tabix. ENDLOOP. LOOP AT i1002_exp. MOVE i1002_exp-tline TO ls_longtext. APPEND ls_longtext TO p_longtext. ENDLOOP. ENDFORM. "read_description . . . DATA: lt_p1002 TYPE TABLE OF p1002 WITH HEADER LINE, lt_relation TYPE hri1001_tab, lt_longtext TYPE wcb_tdline_tab. DATA ls_p1002 LIKE LINE OF lt_p1002. DATA l_subrc TYPE sy-subrc. CALL FUNCTION 'RH_READ_INFTY' EXPORTING plvar = '01' otype = 'S' objid = p_objid infty = '1002' TABLES innnn = lt_p1002 EXCEPTIONS all_infty_with_subty = 1 nothing_found = 2 no_objects = 3 wrong_condition = 4 wrong_parameters = 5 OTHERS = 6. LOOP AT lt_p1002 INTO ls_p1002 WHERE istat = '1'. ENDLOOP. IF sy-subrc = 0. PERFORM read_description IN PROGRAM zhr_sindicato_rutinas USING p_objid ls_p1002-otype ls_p1002-begda ls_p1002-endda ls_p1002-subty ls_p1002-seqnr CHANGING lt_longtext[]. ENDIF.
RH_OBJECT_DESCRIPTION_WRITE
CALL FUNCTION 'RH_OBJECT_DESCRIPTION_WRITE' EXPORTING plvar = '01' otype = 'S' objid = p_objid begda = ls_p1002-begda endda = ls_p1002-endda subty = ls_p1002-subty vtask = 'B' TABLES ptxt1002 = lt_longtext EXCEPTIONS object_not_found = 1 description_required = 2 no_authority = 3 error_during_insert = 4 invalid_date = 5 undefined = 6 OTHERS = 7. IF sy-subrc <> 0. ROLLBACK WORK. l_subrc = 5. RETURN. ENDIF.
Crear Relación
FORM relation_ CHANGING p_subrc. DATA lt_relation TYPE hri1001_tab. DATA ls_relation LIKE LINE OF lt_relation. DATA l_subty LIKE ls_relation-relat. DATA: l_objid TYPE p1000-objid, l_otype TYPE p1000-otype. DATA l_like(20). CLEAR ls_relation. ls_relation-mandt = sy-mandt. ls_relation-plvar = '01'. ls_relation-otype = g_otype. ls_relation-objid = p1000-objid. ls_relation-infty = '1001'. ls_relation-istat = '1'. ls_relation-rsign = 'B'. ls_relation-relat = l_subty. "'Z01'. ls_relation-begda = p1000-begda. ls_relation-endda = p1000-endda. ls_relation-sclas = p_otype. ls_relation-sobid = p_objid. APPEND ls_relation TO lt_relation. PERFORM crea_relacion USING lt_relation CHANGING p_subrc. if p_subrc = 0. CALL FUNCTION 'RH_UPDATE_DATABASE' EXPORTING vtask = 'D' commit_flg = 'X' "VWMCOMMIT clear_buffer = ' ' EXCEPTIONS corr_exit = 04. endif. ENDFORM. "relation_fiscalizacion FORM crea_relacion USING p_relation TYPE hri1001_tab CHANGING p_subrc. CALL FUNCTION 'RH_RELATION_WRITE' EXPORTING vtask = 'B' * KEEP_LUPD = ' ' TABLES relation = p_relation * ERR_RELATION = EXCEPTIONS no_authority = 1 relation_not_allowed = 2 object_not_found = 3 wrong_date_format = 4 time_not_valid = 5 error_during_insert = 6 undefined = 7 OTHERS = 8 . p_subrc = sy-subrc. ENDFORM. "crea_relacion
Ayuda Busqueda para Objeto
En dynpro (include MH5A0I50)
module objid_request_5000 input. self_repid = sy-repid. self_dynnr = sy-dynnr. call function 'RH_OBJID_REQUEST' exporting plvar = pphdr-plvar otype = pphdr-otype dynpro_repid = self_repid dynpro_dynnr = self_dynnr dynpro_plvarfield = 'PPHDR-PLVAR' dynpro_otypefield = 'PPHDR-OTYPE' dynpro_searkfield = 'PM0D1-SEARK' importing sel_object = f4_objec exceptions cancelled = 1 wrong_condition = 2 nothing_found = 3 illegal_mode = 4 internal_error = 5 others = 6. if sy-subrc = 0. move f4_objec-realo to pm0d1-seark. if pphdr-otype = 'K'. clear pm0d1-seark+10(2). endif. endif. endmodule. "objid_request_5000 INPUT
En Dynpro
process on value-request. field pm0d1-seark module objid_request_5000.
En reporte (ver programa S_HRPA_QA_MERGE_JOB_FAMILY)
FORM get_object_f4 USING lp_otype TYPE otype lp_field TYPE char50. DATA : lw_object TYPE objec, lt_dynfield TYPE TABLE OF dynpread, lw_dynfield LIKE LINE OF lt_dynfield. FIELD-SYMBOLS <fs_field> TYPE any. CALL FUNCTION 'RH_OBJID_REQUEST' EXPORTING plvar = c_01 otype = lp_otype seark = '*' orgbeg = p_begda orgend = p_begda IMPORTING sel_object = lw_object EXCEPTIONS cancelled = 1 wrong_condition = 2 nothing_found = 3 internal_error = 4 illegal_mode = 5 OTHERS = 6. IF sy-subrc IS INITIAL. ASSIGN (lp_field) TO <fs_field>. <fs_field> = lw_object-objid. IF lp_field EQ 'P_SOBID'. p_shortt = lw_object-short. p_stextt = lw_object-stext. lw_dynfield-fieldname = 'P_SHORTT'. lw_dynfield-fieldvalue = p_shortt. APPEND lw_dynfield TO lt_dynfield. lw_dynfield-fieldname = 'P_STEXTT'. lw_dynfield-fieldvalue = p_stextt. APPEND lw_dynfield TO lt_dynfield. ELSEIF lp_field EQ 'P_JOBF1'. p_jobf1s = lw_object-short. p_jobf1l = lw_object-stext. lw_dynfield-fieldname = 'P_JOBF1S'. lw_dynfield-fieldvalue = p_jobf1s. APPEND lw_dynfield TO lt_dynfield. lw_dynfield-fieldname = 'P_JOBF1L'. lw_dynfield-fieldvalue = p_jobf1l. APPEND lw_dynfield TO lt_dynfield. ELSEIF lp_field EQ 'P_JOBF2'. p_jobf2s = lw_object-short. p_jobf2l = lw_object-stext. lw_dynfield-fieldname = 'P_JOBF2S'. lw_dynfield-fieldvalue = p_jobf2s. APPEND lw_dynfield TO lt_dynfield. lw_dynfield-fieldname = 'P_JOBF2L'. lw_dynfield-fieldvalue = p_jobf2l. APPEND lw_dynfield TO lt_dynfield. ENDIF. CALL FUNCTION 'DYNP_VALUES_UPDATE' EXPORTING dyname = sy-cprog dynumb = sy-dynnr TABLES dynpfields = lt_dynfield EXCEPTIONS invalid_abapworkarea = 1 invalid_dynprofield = 2 invalid_dynproname = 3 invalid_dynpronummer = 4 invalid_request = 5 no_fielddescription = 6 undefind_error = 7 OTHERS = 8. IF sy-subrc IS NOT INITIAL. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ELSE. IF lp_field EQ 'P_SOBID'. CLEAR : p_shortt, p_stextt. ELSEIF lp_field EQ 'P_JOBF1'. CLEAR : p_jobf1s, p_jobf1l. ELSEIF lp_field EQ 'P_JOBF2'. CLEAR : p_jobf2s, p_jobf2l. ENDIF. ENDIF. ENDFORM. " GET_OBJECT_F4 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_sobid. PERFORM get_object_f4 USING c_fn 'P_SOBID'.