MDLP Note 2024_01_2
Document History
Version | Changes | Effective Date |
1.0 | First approved version 3Keys MDLP Add-On Note 2024_01_2 | 11-Jan-2024 |
1. Overview
This document describes changes in the 3Keys MDLP connector ABAP part.
2. Description
New MDLP Analytic reporting methods added to the 3Keys MDLP connector Add-On:
GENERAL_PRICING_REPORT
GENERAL_REPORT_ON_MOVEMENT
GENERAL_REPORT_ON_REMAINING_ITEM
GENERAL_REPORT_ON_DISPOSAL
Corrections for transaction /K3T/RU_MAR_MONITOR Russia MDLP Analytics: Task monitor:
new function “Download ZIP from MDLP” to download ZIP file for provided GUID. Function is available if user has authorities for object /K3T/RU005 field /K3T/RU005 value “10”. Processing logic:
request MDLP GUID and Configuration ID with Popup window
read first selected item to check if selected report is General report
get result ID from MDLP
get file from MDLP for result ID and save file to PC
new fields “Period type”, “Period from”, “Period to” at report output
some technical hidden fields deleted from output for memory optimization
New database tables added to store analytic reporting data.
/K3T/RU_R_G_MD - Russia MDLP Analytics: General report Medicine disposal
/K3T/RU_R_G_MV - Russia MDLP Analytics: General report on Movement
/K3T/RU_R_G_PR - Russia MDLP Analytics: General Pricing report
/K3T/RU_R_G_RM - Russia MDLP Analytics: General report Remaining medicines
To compress identical entries Business partner data as fields FEDERAL_SUBJECT, CITY, AREA and etc. are stored at existing table /K3T/RU_R_BP Russia MDLP Analytics: Business partner. Database table (for example, /K3T/RU_R_G_MD) contains BP_ID key only and database views /K3T/RU_R_G_MD_V contains all fields from MDLP analytic report
/K3T/RU_R_FILE - Russia MDLP Analytics: CSV File as String (help table to split CSV file into several parts on ZIP file processing)
New fields added into database table /K3T/RU_R_TSK and report /K3T/RU_MAR_MONITOR output:
period type (values “1” - Week, “2” - Month from report task JSON)
period from (period first day from report task JSON)
period to (period last day from report task JSON)
New selection screen fields “All GTINs” and “Select GTINs” added into task scheduler programs to allow run without GTIN specification:
/K3T/RU_MAR_SCD_GEN_MD - Russia MDLP Analytics: Task scheduler General Report on Disposal
K3T/RU_MAR_SCD_GEN_ON_MV - Russia MDLP Analytics: Task scheduler General Report on Movement
/K3T/RU_MAR_SCD_GEN_PR - Russia MDLP Analytics: Task scheduler General Pricing Report
/K3T/RU_MAR_SCD_GEN_RM - Russia MDLP Analytics: Task scheduler General Report on Remaining Items
Error corrections for program /K3T/RU_MAR_REP_PROC - Russia MDLP Analytics: Task processor (General Report):
error with API time limit - in some cases task is not created due to API time limit violation. Default delay set to 65 seconds (can be redefined with parameters /K3T/MDLP_API_TSK_RDEL_DELAY (delete file), /K3T/MDLP_API_TSK_R_DP_DELAY (create disposal report), /K3T/MDLP_API_TSK_R_MV_DELAY (create movement report), K3T/MDLP_API_TSK_R_PR_DELAY (create price report), /K3T/MDLP_API_TSK_R_RM_DELAY (create remaining report), /K3T/MDLP_API_TSK_R_RGET_DELAY (get result id), /K3T/MDLP_API_TSK_R_FILE_DELAY (get file), /K3T/MDLP_API_TSK_R_SRCH_DELAY (get all task status), /K3T/MDLP_API_TSK_R_STAT_DELAY (get single task status)
ABAP code errors
New function module /K3T/RU_MAR_EXEC_GEN_SAVE created to parse ZIP from task database table and save to relevant database table (can be used as processor at configuration transaction /K3T/RU_MAR_CONF or as example for custom function module). Processing logic:
Check there is no previous data at database for this task
Decode ZIP file to files as string
Split file to parts with 100000 entries (can be redefined with parameter MR_CSV_FILE_PART_SIZE)
Save file to database table /K3T/RU_R_FILE (to reduce memory consumption)
For each file from database table /K3T/RU_R_FILE:
read file header and file content as string
split file content by packages with number 20000 (can be redefined with parameter MR_CSV_PACKAGE_SIZE)
parse and save file package to database tables
repeat until file is not empty
commit changes
Delete entries from table /K3T/RU_R_FILE
New logic to parse response with ZIP file from connector:
in case response is not empty check first character. If it is not “{“ it means connector returns file as base64 without JSON and JSON parse is not required. Return response without correction
Otherwise response is JSON and JSON transformation is required. Read parameter MR_JSON_ZIP_PARSE_MODE and transform JSON to ABAP structure fields depending on specified parse mode:
empty or “1” - use parse mode based on string search. Reduce string length after search
“3” - use ID transformation (recommended approach to transform JSON). In case of big size files runtime error occurs because of memory consumption
3. Solution
Import related to the transport request.
3.1 Correction instruction ATTP 3.0
Transport request | Description / Dependencies |
A1DK900621
| 3Keys MDLP Add-On 3.0 Note 2024_01_02 Required transport A1DK900554 |
3.2 Correction instruction ATTP 3.1
Transport request | Description / Dependencies |
A2DK900691 | 3Keys MDLP Add-On 3.1 Note 2024_01_02 Required transport A2DK900615 |
3.3 Correction instruction ATTP 3.2
Transport request | Description / Dependencies |
A3DK900276 | 3Keys MDLP Add-On 3.2 Note 2024_01_02 Required transport A3DK900190 |
3.4 Correction instruction ATTP 3.3
Transport request | Description / Dependencies |
A4DK900080 | 3Keys MDLP Add-On 3.3 Note 2024_01_02 Required transport A4DK900045 or SAPK-303COINK3T |
4. Recommendation
Implement new methods for analytic data processing from MDLP as old methods marked as obsolete at MDLP API documentation. Update MDLP connector java part to the latest version.
5. Source code objects
Short description | Program | Object type | Object name |
Translation for: Domain | LANG | DOMA | /K3T/D_MR_PERIOD_TYPE |
Translation for: Data Element | LANG | DTEL | /K3T/D_MR_CSV_FILE |
Translation for: Data Element | LANG | DTEL | /K3T/D_MR_PERIODFROM |
Translation for: Data Element | LANG | DTEL | /K3T/D_MR_PERIODTO |
Translation for: Data Element | LANG | DTEL | /K3T/D_MR_PERIOD_TYPE |
Translation for: Data Element | LANG | DTEL | /K3T/D_MR_PERIOD_TYPE_TEXT |
Translation for: Single Message | LANG | MESS | /K3T/REP_RU_MR045 |
Translation for: Report Texts | LANG | REPT | /K3T/RU_MAR_SCD_GEN_MD |
Translation for: Report Texts | LANG | REPT | /K3T/RU_MAR_SCD_GEN_ON_MV |
Translation for: Report Texts | LANG | REPT | /K3T/RU_MAR_SCD_GEN_PR |
Translation for: Report Texts | LANG | REPT | /K3T/RU_MAR_SCD_GEN_RM |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_DEL_RSLT |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_GEN_R_DP |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_GEN_R_PR |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_GEN_R_RM |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_RESULTS |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_RSLT |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_SEARCH |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MDLP_API_JOB_STATUS |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MR_CONSTANTS |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MR_UI_HELPER |
Class Definition (ABAP Objects) | LIMU | CLSD | /K3T/CL_MR_UTILS |
Private Header (ABAP Objects) | LIMU | CPRI | /K3T/CL_MR_UTILS |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_DEL_RSLT |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_GEN_R_DP |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_GEN_R_MV |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_GEN_R_PR |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_GEN_R_RM |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_RESULTS |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_RSLT |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_SEARCH |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MDLP_API_JOB_STATUS |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MR_UI_HELPER |
Protected Header (ABAP Objects) | LIMU | CPRO | /K3T/CL_MR_UTILS |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_DEL_RSLT |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_GEN_R_DP |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_GEN_R_PR |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_GEN_R_RM |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_RESULTS |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_RSLT |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_SEARCH |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MDLP_API_JOB_STATUS |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MR_CONSTANTS |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MR_UI_HELPER |
Public Header (ABAP Objects) | LIMU | CPUB | /K3T/CL_MR_UTILS |
Documentation | LIMU | DOCU | NA/K3T/REP_RU_MR043 |
Documentation | LIMU | DOCU | NA/K3T/REP_RU_MR044 |
Documentation | LIMU | DOCU | NA/K3T/REP_RU_MR045 |
Domain Definition | LIMU | DOMD | /K3T/D_MR_ACTION |
Function Module | LIMU | FUNC | /K3T/RU_MAR_EXEC_GEN_SAVE |
Function Module | LIMU | FUNC | /K3T/RU_MAR_EXEC_SAVE |
Single Message | LIMU | MESS | /K3T/REP_RU_MR043 |
Single Message | LIMU | MESS | /K3T/REP_RU_MR044 |
Single Message | LIMU | MESS | /K3T/REP_RU_MR045 |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_DEL_RSLT CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_DEL_RSLT CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_DEL_RSLT EXECUTE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_DP CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_DP CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_MV CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_MV CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_PR CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_PR CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_RM CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_GEN_R_RM CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RESULTS CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RESULTS COMPOSE_REQUEST |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RESULTS CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RSLT CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RSLT CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RSLT EXECUTE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_RSLT EXECUTE_MEMORY_OPT |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_SEARCH CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_SEARCH CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_STATUS CLASS_CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MDLP_API_JOB_STATUS CONSTRUCTOR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UI_HELPER GET_PERIOD_TYPE_DESCR |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS CONVERT_DATE_EXT_TO_INT |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS CONVERT_DISPOSAL_TYPE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS DECODE_RESPONSE_ZIP |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS DELETE_CSV_FILE_LOB |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS GET_FIRST_LAST_DAY_OF_MONTH |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS GET_FIRST_LAST_DAY_OF_WEEK |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS GET_MONTH_NUMBER |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS GET_REPORT_TABLE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS MAP_AND_SAVE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS MAP_GEN_AND_SAVE |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS PARSE_BP |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS PREPARE_CSV_FILE_LOB |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS SET_GEN_MAPPER |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS SET_MAPPER |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS SPLIT_CSV_FILE_HEADER |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS SPLIT_CSV_FILE_PART |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS SPLIT_CSV_FILE_PART_WITH_LOB |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS TRANSFORM_JSON_ZIP_TO_ABAP |
Method (ABAP Objects) | LIMU | METH | /K3T/CL_MR_UTILS UPLOAD_CSV_TABLE |
Report Source Code | LIMU | REPS | /K3T/LRU_MAR_EXECUXX |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_MONITOR_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_REP_PROC_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_MD_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_MD_SSC |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_ON_MV_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_ON_MV_SSC |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_PR_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_PR_SSC |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_RM_C01 |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_GEN_RM_SSC |
Report Source Code | LIMU | REPS | /K3T/RU_MAR_SCD_MD_C01 |
Report Texts | LIMU | REPT | /K3T/RU_MAR_MONITOR |
Report Texts | LIMU | REPT | /K3T/RU_MAR_REP_PROC_C01 |
Report Texts | LIMU | REPT | /K3T/RU_MAR_SCD_GEN_MD |
Report Texts | LIMU | REPT | /K3T/RU_MAR_SCD_GEN_ON_MV |
Report Texts | LIMU | REPT | /K3T/RU_MAR_SCD_GEN_PR |
Report Texts | LIMU | REPT | /K3T/RU_MAR_SCD_GEN_RM |
Table Definition | LIMU | TABD | /K3T/RU_ALV_MR |
Table Definition | LIMU | TABD | /K3T/RU_R_BP |
Table Definition | LIMU | TABD | /K3T/RU_R_FILE |
Table Definition | LIMU | TABD | /K3T/RU_R_TSK |
Domain | R3TR | DOMA | /K3T/D_MR_EXIT_TYPE |
Domain | R3TR | DOMA | /K3T/D_MR_PERIOD_TYPE |
Domain | R3TR | DOMA | /K3T/RU_NOTE2024_01_02V1 |
Data Element | R3TR | DTEL | /K3T/D_MR_ADDRESS |
Data Element | R3TR | DTEL | /K3T/D_MR_CSV_FILE |
Data Element | R3TR | DTEL | /K3T/D_MR_EXIT_DATE |
Data Element | R3TR | DTEL | /K3T/D_MR_EXIT_TYPE |
Data Element | R3TR | DTEL | /K3T/D_MR_FILE_NAME |
Data Element | R3TR | DTEL | /K3T/D_MR_FILE_PART_NUMBER |
Data Element | R3TR | DTEL | /K3T/D_MR_PERIODFROM |
Data Element | R3TR | DTEL | /K3T/D_MR_PERIODTO |
Data Element | R3TR | DTEL | /K3T/D_MR_PERIOD_TYPE |
Data Element | R3TR | DTEL | /K3T/D_MR_PERIOD_TYPE_TEXT |
Table | R3TR | TABL | /K3T/RU_R_FILE |
Table | R3TR | TABL | /K3T/RU_R_G_MD |
Table | R3TR | TABL | /K3T/RU_R_G_MV |
Table | R3TR | TABL | /K3T/RU_R_G_PR |
Table | R3TR | TABL | /K3T/RU_R_G_RM |
View | R3TR | VIEW | /K3T/RU_R_G_MD_V |
View | R3TR | VIEW | /K3T/RU_R_G_MV_V |
View | R3TR | VIEW | /K3T/RU_R_G_PR_V |
View | R3TR | VIEW | /K3T/RU_R_G_RM_V |