2020-08-15 09:44发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 您好, 我要求必须根据物... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我要求必须根据物料类型将"物料主数据"的"税种"默认设置为"零"。
实现此目标的最佳方法是什么。请对我来说非常紧急。
谢谢
嗨罗希特,
感谢您的快速回复。
我遇到了一个小问题。能否检查下面的代码。
*获取MLANSALES数据 io_changed_data-> read_data(导出 i_entity ='MLANSALES' i_struct = io_model-> gc_struct_key_attr IMPORTING er_t_data_mod = lr_t_mod)。 > ASSIGN lr_t_mod-> * TO 。 *仅在返回数据时继续进行如果未分配或是INITIAL,则继续。返回。 ELSE 。读取表分配索引1. 如果sy-subrc =0。将结构的TATYP'分配给。 ASSIGN COMPONENT' USMDX_S_UPDATE'OF STRUCTURE TO 。 *仅当材料具有值时才进行,如果是INITIAL。返回。 ENDIF。 ENDIF。 ENDIF。 *为实体类型MLANSALES 创建数据引用呼叫方法io_model-> create_data_reference EXPORTING i_fieldname ='MLANSALES' i_struct ='KATTR'"根据IT_ATTRIBUTE < br> i_tabtype = if_usmd_model_ext => gc_tabtype_standard 导入 er_data = lrt_entity_data。 *分配e 表的完整性。 此表(如果已填充)将用于将数据写入 ASSIGN lrt_entity_data-> * TO 。 *将实体分配给table。 该表(如果已填充)将用于删除数据。 ASSIGN lrt_entity_data-> * TO 。 *使用上下文类获取更改请求编号 go_context = cl_usmd_app_context => get_context()。 呼叫方法go_context-> get_attributes 导入 ev_crequest_id = iv_cr_number。 ls_sel-sign = lc_incl。 ls_sel-option = lc_equal。 ls_sel-fieldname = usmd0_cs_fld- crequest。 ls_sel-low = iv_cr_number。 INSERT ls_sel插入表lt_sel。 *使用上述派生的变更请求编号获取实体。 这是多余的,以后可以取出。 *我们从上面的io_model-> read_data获取物料编号调用方法io_model-> read_char_value 导出 i_fieldname = usmd0_cs_fld-crequest it_sel = lt_sel if_use_edtn_slice = abap_false IMPORTING et_data = lt_objlist。读取表lt_objlist INTO ls_objlist索引1。 lv_matnr = ls_objlist-usmd_value = lc_incl。 ls_sel-option = lc_equal。 ls_sel-fieldname ='MATERIAL'。 "'DISPR'。"'DISMM'。 ls_sel-low = lv_matnr。插入ls_sel插入表lt_sel。 调用方法io_model-> read_char_value 导出 i_fieldname =' MLANSALES' it_sel = lt_sel 导入 et_data = 。 *在这里,我们可以输入进一步的逻辑以根据材料类型分配不同的MRP配置文件 清除wa_tab。 wa_tab-material = lv_matnr。 IF ='UTX2'OR ='UTX3'OR ='UTXJ'OR < br> ='ZCRT'。 wa_tab-TAXSALTAX ='0'。 ENDIF。 APPEND Wa_tab到lT_tab。清除wa_tab。 gs_comp -name ='材料'。 gs_comp-type?= cl_abap_elemdescr => describe_by_name('MATNR')。将gs_comp附加到gt_comp。 * gs_comp-name ='TAXSALTAX'。 gs_comp-type?= cl_abap_elemdescr => describe_by_name('TAXKM')。将gs_comp附加到gt_comp。 TRY。 r_type_struct = cl_abap_structdescr => create( p_components = gt_comp)。 捕获cx_sy_struct_creation。结束。 * 尝试。 r_type_table = cl_abap_tabledescr => create(r_type_struct)。 CATCH cx_sy_table_creation。 ENDTRY。 * 创建数据:r_data_tab类型把手r_type_table , r_data_str类型句柄r_type_struct。 * ASSIGN:r_data_tab-> * TO , r_data_str-> * TO 。 *填充写入数据 在lt_tab处将LOOP放入wa_tab。将wa_tab对应移动到。 APPEND 至。 ENDLOOP。 *填充属性表创建数据lr_descr_struc类似的行。 lo_structdescr?= cl_abap_structdescr => describe_by_data_ref(p_data_ref = lr_descr_struc)。 INTO TABLE lt_attribute。 ENDLOOP。 如果不是初始的。 TRY。 io_write_data-> write_data(导出 i_entity ='MLANSALES ' it_attribute = lt_attribute it_data = )。捕获 cx_usmd_write_error。 "写访问期间发生错误返回。 ENDTRY。 ENDIF。
我调试了很多次代码,但是直到将write_data写入实体时,数据才能看到但不能按预期方式反映在UI中。
最多设置5个标签!
嗨罗希特,
感谢您的快速回复。
我遇到了一个小问题。能否检查下面的代码。
*获取MLANSALES数据。或是INITIAL,则继续。分配索引1. 的TATYP'分配给。 TO 。是INITIAL。
。。
。
='UTX2'OR
='UTX3'OR
='UTXJ'OR < br> ='ZCRT'。
,。写入数据 。至。
的行。
不是初始的。)。
io_changed_data-> read_data(
导出
i_entity ='MLANSALES'
i_struct = io_model-> gc_struct_key_attr
IMPORTING
er_t_data_mod = lr_t_mod)。 >
ASSIGN lr_t_mod-> * TO
*仅在返回数据时继续进行
如果未分配
返回。
ELSE 。
读取表
如果sy-subrc =0。
将结构
ASSIGN COMPONENT' USMDX_S_UPDATE'OF STRUCTURE
*仅当材料具有值时才进行
,如果
返回。
ENDIF。
ENDIF。
ENDIF。
*为实体类型MLANSALES
创建数据引用呼叫方法io_model-> create_data_reference
EXPORTING
i_fieldname ='MLANSALES'
i_struct ='KATTR'"根据IT_ATTRIBUTE < br> i_tabtype = if_usmd_model_ext => gc_tabtype_standard
导入
er_data = lrt_entity_data。
*分配e 表的完整性。 此表(如果已填充)将用于将数据写入
ASSIGN lrt_entity_data-> * TO
*将实体分配给table。 该表(如果已填充)将用于删除数据。
ASSIGN lrt_entity_data-> * TO
*使用上下文类获取更改请求编号
go_context = cl_usmd_app_context => get_context()。
呼叫方法go_context-> get_attributes
导入
ev_crequest_id = iv_cr_number。
ls_sel-sign = lc_incl。
ls_sel-option = lc_equal。
ls_sel-fieldname = usmd0_cs_fld- crequest。
ls_sel-low = iv_cr_number。
INSERT ls_sel插入表lt_sel。
*使用上述派生的变更请求编号获取实体。 这是多余的,以后可以取出。
*我们从上面的io_model-> read_data获取物料编号
调用方法io_model-> read_char_value
导出
i_fieldname = usmd0_cs_fld-crequest
it_sel = lt_sel
if_use_edtn_slice = abap_false
IMPORTING
et_data = lt_objlist。
读取表lt_objlist INTO ls_objlist索引1。
lv_matnr = ls_objlist-usmd_value = lc_incl。
ls_sel-option = lc_equal。
ls_sel-fieldname ='MATERIAL'。 "'DISPR'。"'DISMM'。
ls_sel-low = lv_matnr。
插入ls_sel插入表lt_sel。
调用方法io_model-> read_char_value
导出
i_fieldname =' MLANSALES'
it_sel = lt_sel
导入
et_data =
*在这里,我们可以输入进一步的逻辑以根据材料类型分配不同的MRP配置文件
清除wa_tab。
wa_tab-material = lv_matnr。
IF
wa_tab-TAXSALTAX ='0'。
ENDIF。
APPEND Wa_tab到lT_tab。
清除wa_tab。
gs_comp -name ='材料'。
gs_comp-type?= cl_abap_elemdescr => describe_by_name('MATNR')。
将gs_comp附加到gt_comp。
*
gs_comp-name ='TAXSALTAX'。
gs_comp-type?= cl_abap_elemdescr => describe_by_name('TAXKM')。
将gs_comp附加到gt_comp。
TRY。
r_type_struct = cl_abap_structdescr => create(
p_components = gt_comp)。
捕获cx_sy_struct_creation。
结束。
*
尝试。
r_type_table = cl_abap_tabledescr => create(r_type_struct)。
CATCH cx_sy_table_creation。
ENDTRY。
*
创建数据:r_data_tab类型把手r_type_table ,
r_data_str类型句柄r_type_struct。
*
ASSIGN:r_data_tab-> * TO
r_data_str-> * TO
*填充
在lt_tab处将LOOP放入wa_tab。
将wa_tab对应移动到
APPEND
ENDLOOP。
*填充属性表
创建数据lr_descr_struc类似
lo_structdescr?= cl_abap_structdescr => describe_by_data_ref(p_data_ref = lr_descr_struc)。 INTO TABLE lt_attribute。
ENDLOOP。
如果
TRY。
io_write_data-> write_data(
导出
i_entity ='MLANSALES '
it_attribute = lt_attribute
it_data =
捕获 cx_usmd_write_error。 "写访问期间发生错误
返回。
ENDTRY。
ENDIF。
我调试了很多次代码,但是直到将write_data写入实体时,数据才能看到但不能按预期方式反映在UI中。
一周热门 更多>