2020-08-16 00:41发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有以下要求:创建一个可以在EWM中执行过帐更改的功能模块(由后台程序调用)。
现在,我找到了以下功能模块:/SCWM/STOCK_CHANGE,但是我不清楚如何用数据填充它。 这里有人知道什么功能模块或方法可用于填写导入参数吗?
当您从UI进行发布更改时,所有这些都发生在类/SCWM/CL_UI_POST中,但是我看不到如何在没有UI元素的情况下使用该类的某些部分。
此致
Rob
我回到这个问题是因为此刻它变得越来越紧迫:我已经确定了几个可能的候选功能模块可以为我完成此任务,但是,遗憾的是,它们都没有被记录(或 就此发布)。
有/scwm/gm_create,/scwm/gm_post,/scwm/stock_change
我对任何示例代码都很满意,提示了如何解决这个问题,...
始终感谢Rob
嗨,大家好,
我设法解决了这个问题。 我使用类/SCWM/CL_UI_POST来做到这一点。
步骤是:
希望这会有所帮助,请更改回答的主题。
桑托什
嗨,桑托什,
如果可以的话,请您分享示例代码。 我们正面临着同样的问题。
谢谢
Srinivasa
一切都变得简单。 我喜欢实现的
CALL FUNCTION'/SCWM/STOCK_CHANGE'
导出
is_header = ls_header
it_item = lt_item
导入
et_bapiret = lt_bapiret
ev_severity = lv_severity。
CALL FUNCTION'/SCWM/GM_POST'。
提交工作并等待。
我也遇到了同样的问题,但是专门在商品收到我使用的功能模块/SCWM/STOCK_CHANGE和/SCWM/之后更新库存类型。 GM_POST,我可以根据需要提供用于修改的方法。
如果以下代码无法满足您的要求,我建议您打开事务SAAB并激活断点/SCWM/GM,然后使用事务/n/SCWM/POST进行发布并找到功能模块/SCWM/STOCK_CHANGE,并查看有关示例的导入结构和表中传递的Standart代码,我相信,如果您更改为仅使用标准格式,就像我在我的案例中所做的那样,那么它将起作用。
祝你好运
亚历克斯。
METHOD update_stock_type。 /scwm/aqua的数据lt_aqua类型标准表。 数据it_item类型/scwm/tt_spitem。 数据is_item类型/scwm/s_spitem。 数据lt_bapiret类型TYPE bapiret2_t。 数据lv_severity TYPE bapi_mtype。 DATA is_quan TYPE/scwm/s_quan。 /scwm/ordim_c的数据lt_ordim_c类型标准表。 数据lv_cat类型/lime/stock_category。 "对于我的情况,有必要存在一个我们要更新的HU的内部表,并且为了仅显示示例,请考虑它是lt_hus "获取有关水上HU的信息 选择 * 从/scwm/aqua 进入表lt_aqua 对于lt_hus中的所有条目 在哪里lgnum EQ lv_lgnum 和huident EQ lt_hus-huident。 如果sy-subrc <> 0。 "如果找不到数据,请执行您自己的逻辑 万一。 "获取更新的物品信息 选择 * 从/scdl/db_proci_i 插入表@DATA(lt_proci_update) docid EQ @ gs_screen_items-proci-docid。 如果sy-subrc <> 0。 清除lt_proci_update。 "如果找不到数据,请执行您自己的逻辑 万一。 "通过发布获取为HU创建的任务 选择 * 从/scwm/ordim_c 进入表lt_ordim_c 对于lt_ewmt021中的所有条目 在哪里lgnum EQ gs_screen_header-lgnum 和dguid_hu EQ lt_ewmt021-guid_hu。 如果sy-subrc <> 0。 清除:lt_ewmt021,lt_proci_update,lt_ordim_c。 "如果找不到数据,请执行您自己的逻辑 万一。 循环至lt_hus ASSIGNING FIELD-SYMBOL()。 使用键huident = -huident ASSIGNING FIELD-SYMBOL()读取表lt_aqua。 如果未分配。 继续。 万一。 读取表lt_proci_update WITH KEY docid = -docid itemid = -itemid分配字段符号()。 如果未分配。 继续。 万一。 使用键dguid_hu = -guid_hu ASSIGNING FIELD-SYMBOL()读取表lt_ordim_c。 如果未分配。 继续。 万一。 "在这种情况下,更新将是将库存类型从冻结改为未冻结 "要更新的库存类型 将 -cat移动到lv_cat。 将lv_cat中所有'B'事件替换为'F'。 "获取QUAN信息 单选* 从/scwm/quan INTO @DATA(ls_quan) guid_stock EQ @ -guid_stock在哪里 和guid_parent EQ @ -guid_parent。 "使用当前的行迭代器设置ID is_item-id = sy-tabix。 is_item-id_group = sy-tabix + 1。 is_item-direction ='T'。 is_item-squant_set = abap_true。 is_item-procty = -/scwm/procty。 is_item-guid_hu = -guid_hu。 is_item-huident = -huident。 " HU节省的库存数量 is_quan-unit = -uom。 is_quan-quan = -数量。 APPEND is_quan TO is_item-t_quan。 "有关Wharehouse中HU的信息 is_item-loc-lgnum = gs_screen_header-lgnum。 is_item-loc-lgtyp = -lgtyp。 is_item-loc-lgpla = -lgpla。 "传递HU的当前信息 is_item-source_s-idx_stock = ls_quan-idx_stock。 is_item-source_s-guid_stock = -guid_stock。 is_item-source_s-matid = -matid。 is_item-source_s-cat = -cat。 is_item-source_s-owner = -所有者。 is_item-source_s-owner_role = -owner_role。 is_item-source_s-titled = -titled。 is_item-source_s-entitled_role = -entitled_role。 is_item-source_s-qdoccat = -doccat。 is_item-source_s-qdocid = -docid。 is_item-source_s-qitmid = -itemid。 "通过信息传递我们想要对库存进行的修改 is_item-dest_s-matid = -matid。 is_item-dest_s-cat = lv_cat。 "我们将要修改的内容 is_item-dest_s-matid = -matid。 is_item-dest_s-qdoccat = -doccat。 is_item-dest_s-qdocid = -docid。 is_item-dest_s-qitmid = -itemid。 is_item-dest_s-owner = -所有者。 is_item-dest_s-owner_role = -owner_role。 is_item-dest_s-titled = -titled。 is_item-dest_s-entitled_role = -entitled_role。 APPEND is_item至it_item。 清除is_item。 结局。 "调用库存变更功能模块以继续更新HU 通话功能'/SCWM/STOCK_CHANGE' 出口 is_header = VALUE/scwm/s_gmheader(lgnum = gs_screen_header-lgnum created_by = -created_by created_at = -created_at 代码='/SCWM/POST') it_item = it_item 输入 et_bapiret = lt_bapiret ev_severity = lv_severity。 在lt_bapiret分配字段符号()处循环播放。 IF 类型的EQ'E'。 通话功能" YOUR_MESSAGE_FUNCTION" 出口 iv_id = -id iv_number = -编号 iv_typ = -类型 iv_var1 = -消息_v1 iv_var2 = -消息_v2 iv_var3 = -消息_v3 iv_var4 = -消息_v4。 清除:lt_proci_update,lt_ordim_c。 "实施罗蒂娜·德埃罗 万一。 结局。 "将尝试发布更改,为此功能模块将生成一个新任务 尝试。 数据lv_tanum TYPE/scwm/tanum。 通话功能'/SCWM/GM_POST' 输入 ev_tanum = lv_tanum et_bapiret = lt_bapiret ev_severity = lv_severity。 捕获/scwm/cx_core。 循环lt_bapiret分配。 IF 类型的EQ'E'。 通话功能" YOUR_MESSAGE_FUNCTION" 出口 iv_id = -id iv_number = -编号 iv_typ = -类型 iv_var1 = -消息_v1 iv_var2 = -消息_v2 iv_var3 = -消息_v3 iv_var4 = -消息_v4。 清除:lt_proci_update,lt_ordim_c。 "在出现错误时实施自己的逻辑 万一。 结局。 ENDTRY。 提交工作并等待。 ENDMETHOD。
最多设置5个标签!
我回到这个问题是因为此刻它变得越来越紧迫:我已经确定了几个可能的候选功能模块可以为我完成此任务,但是,遗憾的是,它们都没有被记录(或 就此发布)。
有/scwm/gm_create,/scwm/gm_post,/scwm/stock_change
我对任何示例代码都很满意,提示了如何解决这个问题,...
始终感谢Rob
嗨,大家好,
我设法解决了这个问题。 我使用类/SCWM/CL_UI_POST来做到这一点。
步骤是:
希望这会有所帮助,请更改回答的主题。
此致
桑托什
嗨,桑托什,
如果可以的话,请您分享示例代码。 我们正面临着同样的问题。
谢谢
Srinivasa
一切都变得简单。 我喜欢实现的
CALL FUNCTION'/SCWM/STOCK_CHANGE'
导出
is_header = ls_header
it_item = lt_item
导入
et_bapiret = lt_bapiret
ev_severity = lv_severity。
CALL FUNCTION'/SCWM/GM_POST'。
提交工作并等待。
我也遇到了同样的问题,但是专门在商品收到我使用的功能模块/SCWM/STOCK_CHANGE和/SCWM/之后更新库存类型。 GM_POST,我可以根据需要提供用于修改的方法。
如果以下代码无法满足您的要求,我建议您打开事务SAAB并激活断点/SCWM/GM,然后使用事务/n/SCWM/POST进行发布并找到功能模块/SCWM/STOCK_CHANGE,并查看有关示例的导入结构和表中传递的Standart代码,我相信,如果您更改为仅使用标准格式,就像我在我的案例中所做的那样,那么它将起作用。
祝你好运
亚历克斯。
一周热门 更多>