cancel
Showing results for 
Search instead for 
Did you mean: 

how to read a active cr data in flex mode

0 Kudos

plz let me know

Accepted Solutions (0)

Answers (2)

Answers (2)

0 Kudos

First get the CR using the BP number:

DATA : LR_MODEL TYPE REF TO IF_USMD_MODEL,
LT_ENT TYPE USMD_T_VALUE,
LS_ENT TYPE USMD_S_VALUE,
LO_USMD_CHG_DOC TYPE REF TO CL_USMD_MDF_CHANGE_DOCUMENT.

CALL METHOD CL_USMD_MODEL=>GET_INSTANCE
EXPORTING
I_USMD_MODEL = 'BP'
IMPORTING
EO_INSTANCE = LR_MODEL
ET_MESSAGE = DATA(LT_MSG).

CALL METHOD CL_USMD_MDF_CHANGE_DOCUMENT=>GET_INSTANCE
RECEIVING
EO_INSTANCE = LO_USMD_CHG_DOC.

LS_ENT-FIELDNAME = 'BP_HEADER'.
LS_ENT-VALUE = '23'. "Pass BP number with leading zeroes here, it wont work otherwise
APPEND LS_ENT TO LT_ENT.

CALL METHOD LO_USMD_CHG_DOC->READ_DOCUMENT_HEADER
EXPORTING
I_ENTITY = 'BP_HEADER'
IT_ENTITY_VALUE = LT_ENT
IO_MODEL = LR_MODEL
IMPORTING
ET_DOCUMENT_HEADER = DATA(LT_HEADER). "This table contains the CR number

Then next get entity data like this:

DATA : LR_MODEL TYPE REF TO IF_USMD_MODEL_EXT,
LT_SEL TYPE USMD_TS_SEL,
LS_SEL TYPE USMD_S_SEL,
LT_CREQUEST_1 TYPE USMD_T_CREQUEST_ENTITY,
LO_MODEL TYPE REF TO IF_USMD_GOV_API,
LR_BP_DATA_STR TYPE REF TO DATA,
LR_BP_DATA_TAB TYPE REF TO DATA,
LV_CR_NUMBER TYPE USMD120C-USMD_CREQUEST,
LV_BP TYPE C LENGTH 10,
LR_BP_KEY_STR TYPE REF TO DATA,
LR_BP_KEY_TAB TYPE REF TO DATA.

FIELD-SYMBOLS : <LS_KEY_1> TYPE ANY,
<LT_KEY_1> TYPE INDEX TABLE,
<VALUE> TYPE ANY,
<LT_BP_DATA> TYPE INDEX TABLE,
<LS_BP_DATA> TYPE ANY.
START-OF-SELECTION.
BREAK-POINT.

LV_CR_NUMBER = '000000000605'. "Take from first part of logic
LV_BP = '0001600058'. "Pass BP with leading zeroes


TRY.CALL METHOD CL_USMD_GOV_API=>GET_INSTANCEEXPORTING
IV_MODEL_NAME = 'BP'
RECEIVING
RO_GOV_API = LO_MODEL.CATCH CX_USMD_GOV_API .ENDTRY.

LO_MODEL->CREATE_DATA_REFERENCE(EXPORTING
IV_ENTITY_NAME = 'BP_VENGEN'
IV_STRUCT = LO_MODEL->GC_STRUCT_KEYIMPORTING
ER_STRUCTURE = LR_BP_KEY_STR
ER_TABLE = LR_BP_KEY_TAB ).

LO_MODEL->CREATE_DATA_REFERENCE(EXPORTING
IV_ENTITY_NAME = 'BP_VENGEN'
IV_STRUCT = LO_MODEL->GC_STRUCT_KEY_ATTRIMPORTING
ER_STRUCTURE = LR_BP_DATA_STR
ER_TABLE = LR_BP_DATA_TAB ).
ASSIGN LR_BP_KEY_STR->* TO <LS_KEY_1>.ASSIGN LR_BP_KEY_TAB->* TO <LT_KEY_1>.
ASSIGN COMPONENT 'BP_HEADER' OF STRUCTURE <LS_KEY_1> TO <VALUE>.
<VALUE> = LV_BP.INSERT <LS_KEY_1> INTO TABLE <LT_KEY_1>.
ASSIGN LR_BP_DATA_TAB->* TO <LT_BP_DATA>.
TRY.CALL METHOD LO_MODEL->IF_USMD_GOV_API_ENTITY~READ_ENTITYEXPORTING
IV_CREQUEST_ID = LV_CR_NUMBER
IV_ENTITY_NAME = 'BP_HEADER'
IT_KEY = <LT_KEY_1>
IF_ACTIVE_DATA = ' 'IMPORTING
ET_DATA = <LT_BP_DATA>.CATCH CX_USMD_GOV_API_CORE_ERROR .CATCH CX_USMD_GOV_API .ENDTRY.

bpawanchand
Active Contributor
0 Kudos

Hi,

Please find the below code

DATA lo_if_usmd_model TYPE REF TO if_usmd_model.
DATA lo_cl_usmd_model TYPE REF TO cl_usmd_model.
DATA lo_data TYPE REF TO data.
DATA lv_model TYPE usmd_model VALUE '0G'.
DATA lv_pl_flg TYPE wdy_boolean.
DATA lv_querymode TYPE usmd_querymode VALUE 2.
DATA ls_sel TYPE usmd_s_sel.
DATA lt_messages TYPE usmd_t_message.
DATA lt_sel TYPE usmd_ts_sel.
FIELD-SYMBOLS: <fs_t_data> TYPE ANY TABLE,
 <fs_s_data> TYPE any,
 <fs_v_val> TYPE any.
PARAMETERS: p_acc TYPE usmdz1_account,
 p_edtn TYPE usmd_edition.
CALL METHOD cl_usmd_model=>get_instance
 EXPORTING
 i_usmd_model = lv_model
 IMPORTING
 eo_instance = lo_if_usmd_model
 et_message = lt_messages.
lo_cl_usmd_model ?= lo_if_usmd_model.
CALL METHOD lo_cl_usmd_model->if_usmd_model_delta~create_data_reference
 EXPORTING
 i_fieldname = 'ACCOUNT'
 i_struct = 'KATTR'
 if_table = abap_true
 i_tabtype = 'S'
 RECEIVING
 er_data = lo_data.
ASSIGN lo_data->* TO <fs_t_data>.
*ACCOUNT
ls_sel-fieldname = 'ACCOUNT'.
ls_sel-low = p_acc.
ls_sel-option = 'EQ'.
ls_sel-sign = 'I'.
APPEND ls_sel TO lt_sel.
CALL METHOD lo_cl_usmd_model->if_usmd_model~query
 EXPORTING
 i_fieldname = 'ACCOUNT'
 it_sel = lt_sel
 i_querymode = lv_querymode
 if_use_edtn_slice = abap_false
 IMPORTING
 et_data = <fs_t_data>
 et_message = lt_messages.

You can also Make use of the READ_CHAR_VALUE of IF_USMD_MODEL in which you have the option to pass the ReadMode.

Make use of the CL_USMD_GOV_API . to read the CR Data.

Thanks, Pavan

0 Kudos

thanks pavan

michael_theis
Active Contributor
0 Kudos

The usage of the CL_USMD_MODEL is actually forbidden. Please check the MDG Wiki -> Application Framework for details on using the different, public MDG APIs including examples.