如何在flex模式下读取活动的cr数据

2020-08-30 00:21发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


plz让我知道

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


plz让我知道

付费偷看设置
发送
3条回答
亦是此间程序员
1楼-- · 2020-08-30 01:05

嗨,

请找到以下代码

数据lo_if_usmd_model TYPE REF if_usmd_model。
 数据lo_cl_usmd_model类型参考cl_usmd_model。
 DATA lo_data TYPE REF TO数据。
 数据lv_model类型usmd_model值'0G'。
 数据lv_pl_flg类型wdy_boolean。
 数据lv_querymode类型usmd_querymode VALUE 2。
 数据ls_sel类型为usmd_s_sel。
 数据lt_messages类型usmd_t_message。
 数据lt_sel类型usmd_ts_sel。
 FIELD-SYMBOLS: TYPE ANY TABLE,
   TYPE任意,
   TYPE任意。
 参数:p_acc类型usmdz1_account,
  p_edtn TYPE usmd_edition。
 呼叫方法cl_usmd_model => get_instance
  出口
  i_usmd_model = lv_model
  输入
  eo_instance = lo_if_usmd_model
  et_message = lt_messages。
 lo_cl_usmd_model?= lo_if_usmd_model。
 调用方法lo_cl_usmd_model-> if_usmd_model_delta〜create_data_reference
  出口
  i_fieldname ='ACCOUNT'
  i_struct ='KATTR'
  if_table = abap_true
  i_tabtype ='S'
  接收
  er_data = lo_data。
 ASSIGN lo_data-> *至。
 *帐户
 ls_sel-fieldname ='ACCOUNT'。
 ls_sel-low = p_acc。
 ls_sel-option ='EQ'。
 ls_sel-sign ='I'。
 追加ls_sel至lt_sel。
 调用方法lo_cl_usmd_model-> if_usmd_model〜query
  出口
  i_fieldname ='ACCOUNT'
  it_sel = lt_sel
  i_querymode = lv_querymode
  if_use_edtn_slice = abap_false
  输入
  et_data = 
  et_message = lt_messages。

您还可以使用IF_USMD_MODEL的READ_CHAR_VALUE,在其中您可以选择传递ReadMode。

使用CL_USMD_GOV_API。 读取CR数据。

谢谢Pavan

compass1988
2楼-- · 2020-08-30 01:05

实际上禁止使用CL_USMD_MODEL。 请检查 MDG Wiki ->应用程序框架,以获取有关使用不同的公共MDG API(包括示例)的详细信息。

太Q了
3楼-- · 2020-08-30 00:51

首先使用BP号获得CR:

数据:IF_USMD_MODEL的LR_MODEL类型参考,
USMD_T_VALUE的LT_ENT类型参考,
LO_USMD_CHG_DOC CL_USMD_MDF_CHANGE_DOCUMENT的类型。LS_ENT类型USMD_S_VALUE的参考。

调用方法CL_USMD_MODEL => GET_INSTANCE
导出
I_USMD_MODEL ='BP'
导入
EO_INSTANCE = LR_MODEL
ET_MESSAGE = DATA(LT_MSG)。
调用方法CL_USMD_DOCF => GET_INSTANCE
接收
EO_INSTANCE = LO_USMD_CHG_DOC。

LS_ENT-FIELDNAME ='BP_HEADER'。
LS_ENT-VALUE ='23'。 "在此处传递前导零的BP号,否则将不起作用
将LS_ENT附加到LT_ENT。

调用方法LO_USMD_CHG_DOC-> READ_DOCUMENT_HEADER
导出
I_ENTITY ='BP_HEADER'
IT_ENTITY_VALUE = LT_ENT
IO_MODEL = LR_MODEL
IMPORTING
ET_DOCUMENT_HEADER = DATA(LT_HEADER)。"此表包含CR编号

然后接下来获取这样的实体数据:

DATA:LR_MODEL类型参考IF_USMD_MODEL_EXT,
LT_SEL类型USMD_TS_SEL,
LS_SEL类型USMD_S_SEL,
LT_CREQUEST_1类型USMD_T_CREQUEST_ENTITY,
LO_MODE_数据类型REF REF
LR_BP_DATA_TAB类型参考数据,
LV_CR_NUMBER类型USMD120C-USMD_CREQUEST,
LV_BP类型C长度10,
LR_BP_KEY_STR类型参考数据,
LR_BP_KEY_TAB类型参考数据。 > FIELD-SYMBOLS: TYPE ANY,
TYPE INDEX TABLE,
TYPE ANY,
TYPE INDEX TABLE,
TYPE ANY。< br>开始选择。
BREAK-POINT。

LV_CR_NUMBER ='000000000605'。 "取自逻辑的第一部分
LV_BP ='0001600058'。"将前导零传递给BP


TRY.CALL方法CL_USMD_GOV_API => GET_INSTANCEEXPORTING
IV_MODEL_NAME ='BP'
接收
RO_GOV_API = LO_MODEL.CATCH CX_USMD_GOV_API .ENDTRY。
MODE_COMPORT_PORT
IV_ENTITY_NAME ='BP_VENGEN'
IV_STRUCT = LO_MODEL-> GC_STRUCT_KEYIMPORTING
ER_STRUCTURE = LR_BP_KEY_STR
ER_TABLE = LR_BP_KEY_TAB)。 '
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 。 ASSIGN组件'BP_HEADER'的结构
= LV_BP.INSERT 插入表
ASSIGN LR_BP_DATA_TAB-> *到
尝试呼叫LO_MODEL-> IF_USMD_GOV_API_ENTITY〜READ_ENTITYEXPORTING
IV_CREQUEST_ID = LV_CR_NUMBER
IV_ENTITY_NAME ='BP_HEADER'
IT_KEY =
IF_ACTIVE_DA TA =''IMPORTING
ET_DATA = .CATCH CX_USMD_GOV_API_CORE_ERROR .CATCH CX_USMD_GOV_API .ENDTRY。

一周热门 更多>