How to update the records in Resubmission/Notes – UDM_RSM_ATTR table
SAP did not provide the standard FM or program to create collection history/Resubmission/Notes in table UDM_RSM_ATTR.
It got difficult to find out standard FM or creating a program to update the records in the table.
Somehow achieved this, by writing the code.
Before going to development part, we need to understand what collection history is.
Below are the links, which can be useful to understand.
Creation of Resubmission and Notes
Below is the screen shot for creation of resubmissions.
Execute Transactions UDM_SPECIALIST or UDM_SUPERVISOR.
Click on create button in Resubmission tab
Click on the display button on resubmission tab if you want to see the notes.
We need to have Customer, Invoice number and company code already present in the system which are inter linked for creating Resubmission.
If you have access to transaction UDM_SPECIALIST but still cannot view the customers, then either customers not present in the system or you have to get the required access from basis team.
The Records will be stored in the table UDM_RSM_ATTR and the comments section are stored in tables STXL, STXH
Collection logs will be captured only for Open Customer invoices.
- Define Collection Profile
- Define Collection Groups
- Define Collection Segments
- Assign Collection Groups to Collection Segments
- Define Resubmission Reason and Note Reason
As SAP did not provide any standard FM or program, we can do it by using below logic.
Required parameter to create the record are
RSM_DATE, “Resubmission Date
CUSTOMER “ Business Partner Number
COLL_SEGMENT “ Collection Segment
RSM_REASON “ Reason for Resubmission
OBJTYPE “Object Type
OBJKEY “Object key
First step: Creation of GUID.
SAP will create a unique id that can be created with below FM.
Create UID from function module that will be unique for that transaction.
* create guid
CALL FUNCTION ‘SYSTEM_UUID_C_CREATE’
uuid = lv_rsm_guid.
Objkey field in the table will be combination of Company code+Document no.+year+Line item.
Need to pass date in RSM_DATE field.
Pass BP to CUSTOMER field
Creation of Resubmission using Custom FM
Below is the sample logic for Custom FM to update the records in the table.
Attached source code for reference.
DATA: l_timestamp TYPE timestamp, l_timestamp1 TYPE timestamp, l_string TYPE string, lv_string1 TYPE string, lv_string2 TYPE string, l_timestring(14) TYPE n, ls_header TYPE thead, ls_new_text TYPE itclh, ls_rsm_attr TYPE udm_rsm_attr, ls_rsm_attributes TYPE bdm_rsm_attr. ls_rsm_attributes = is_rsm_attributes. * Authority check for creation of RSM DATA:l_error TYPE string. AUTHORITY-CHECK OBJECT 'F_UDM_SGMT' ID 'ACTVT' FIELD '28' ID 'UDM_SGMNT' FIELD ls_rsm_attributes-coll_segment. IF sy-subrc <> 0. IF i_qualifier = c_nts. MESSAGE e023(zudm_resubmission) INTO l_error. ELSE. MESSAGE e003(zudm_resubmission) INTO l_error. ENDIF. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno IMPORTING return = return. RETURN. ENDIF. * Check on resubmission date. Resubmission date can't be < today's date IF ls_rsm_attributes-rsm_date < sy-datlo. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'E' cl = 'UDM_RESUBMISSION' number = '004' IMPORTING return = return. MESSAGE e004(zudm_resubmission). RETURN. ENDIF. * Save the notes IF NOT it_note IS INITIAL. * Get the timestamp and concatenate it with the GUID of rsm to use it * as the TDNAME for the note GET TIME STAMP FIELD l_timestamp. CONVERT TIME STAMP l_timestamp TIME ZONE 'UTC ' INTO DATE ls_header-tdfdate TIME ls_header-tdftime. UNPACK l_timestamp TO l_timestring. CONCATENATE i_rsm_guid l_timestring INTO ls_header-tdname. ls_header-tdid = '0001'. ls_header-tdspras = sy-langu. * User name is filled with the collection specialist name ls_header-tdfuser = i_coll_specialist. ls_header-tdobject = 'UDM_RSM'. ls_new_text-header = ls_header. ls_new_text-lines = it_note. ls_header-tdluser = i_coll_specialist. ls_header-tdldate = ls_header-tdfdate. ls_header-tdltime = ls_header-tdftime. * Add the protocol line to the notes of the resubmission PERFORM add_prot_line USING ls_header CHANGING ls_new_text-lines. * Get the protocol line into the export parameter READ TABLE ls_new_text-lines INDEX 1 INTO es_note_prot_line. * Save the notes CALL FUNCTION 'SAVE_TEXT' EXPORTING header = ls_new_text-header insert = 'X' TABLES lines = ls_new_text-lines EXCEPTIONS id = 1 language = 2 name = 3 object = 4 OTHERS = 5. IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno par1 = sy-msgv1 par2 = sy-msgv2 par3 = sy-msgv3 par4 = sy-msgv4 IMPORTING return = return. RETURN. ENDIF. ENDIF. * Prepare the structure with the attributes of RSM GET TIME STAMP FIELD l_timestamp. MOVE created_at to l_timestamp1. ls_rsm_attr-rsm_guid = i_rsm_guid. ls_rsm_attr-customer = ls_rsm_attributes-customer. ls_rsm_attr-coll_segment = ls_rsm_attributes-coll_segment. ls_rsm_attr-rsm_date = ls_rsm_attributes-rsm_date. ls_rsm_attr-rsm_time = ls_rsm_attributes-rsm_time. ls_rsm_attr-rsm_xbypass = ls_rsm_attributes-rsm_xbypass. ls_rsm_attr-rsm_reason = ls_rsm_attributes-rsm_reason. ls_rsm_attr-rsm_status = '0'. ls_rsm_attr-created_by = i_coll_specialist. * ls_rsm_attr-created_at = l_timestamp. ls_rsm_attr-created_at = l_timestamp1. "created_at. ls_rsm_attr-changed_by = i_coll_specialist. ls_rsm_attr-changed_at = l_timestamp. ls_rsm_attr-objtype = ls_rsm_attributes-objtype. ls_rsm_attr-objkey = ls_rsm_attributes-objkey. ls_rsm_attr-rsm_attch_count = ls_rsm_attributes-rsm_attch_count. gs_rsm_attr = ls_rsm_attr. CALL FUNCTION 'COMMIT_TEXT' EXPORTING savemode_direct = ''. CALL FUNCTION 'UDM_RSM_CREATE_UPDATE' IN UPDATE TASK EXPORTING is_rsm_attr = gs_rsm_attr.
Note: On the SAP screen it does not allow to enter a back dated Resubmission. We can achieve this programmatically.