BAPI BAPI_GOODSMVT_CREATE中的转移过帐问题

2020-09-07 16:36发布

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

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


问候专家

我被要求检查一个有助于使用BAPI BAPI_GOODSMVT_CREATE进行货物转移的客户端程序,但是由于某些原因,该程序失败了,即使这是另一个程序的副本,该程序可以使用相同的BAPI完美地工作,但对于"商品" 问题",我想知道是我们是否正确填充数据还是丢失一些关键数据,这是程序正在执行的当前逻辑:

刷新:lti_goodsmvt_item。
       lwa_goodsmvt_header-gr_gi_slip_no = gwa_movimiento_im-no_documento。
       循环播放im_o_md-> gwa_ajuste_inventario-movimientos []
               ASSIGNING FIELD-SYMBOL()##需要" #EC CI_CALLTA
               在哪里no_documento = gwa_movimiento_im-no_documento。

         清除:lv_fecha。
         lv_fecha =  -fecha_movimiento。
         凝聚lv_fecha NO-GAPS。
         lwa_goodsmvt_header-pstng_date = lv_fecha + 0(8)。

         清除:lv_fecha。
         lv_fecha =  -fecha_movimiento。
         凝聚lv_fecha NO-GAPS。
         lwa_goodsmvt_header-doc_date = lv_fecha + 0(8)。

         lwa_goodsmvt_header-header_txt =  -no_transferencia_alpina。

         清除:lwa_goodsmvt_item,gv_flag。
         使用键material_ean =  -material_ean将表gtd_materiales读入DATA(lwa_materiales)。
         如果sy-subrc = 0。
           lwa_goodsmvt_item-material = lwa_materiales-描述。
           lwa_goodsmvt_item-move_mat = lwa_materiales-descripcion。
         万一。

         使用键因果关系= -因果关系将表gtd_causal读入数据(lwa_causal)。
         如果sy-subrc = 0。
           lwa_goodsmvt_item-move_type = lwa_causal-no_documento。
           lwa_goodsmvt_item-move_reas = lwa_causal-no_transferencia_alpina。
         万一。

         转换时间戳记 -fecha_vencimiento时区sy-zonlo INTO DATE lwa_goodsmvt_item-expirydate。

         清除:lwa_homo_werks。
     读取表lti_homo_werks使用键zwerkslr =  -org_origen进入lwa_homo_werks。

         读取表ltd_causal使用键Casual = -因果进入数据(lwa_causal_1)。
         如果sy-subrc = 0。

           如果 -org_destino =空间。

             案例lwa_causal_1-devol。
               当" X"时。
                 lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
                 lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。
                 lwa_goodsmvt_item-move_plant = lwa_homo_werks-zwerkso。
                 lwa_goodsmvt_item-move_stloc = lwa_homo_werks-zlgorto。

               当别人。
                 lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
                 lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。

             结束。

           其他。

             lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
             lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。

             清除:lwa_homo_werks。
             读取表lti_homo_werks使用键zwerkslr =  -org_destino进入lwa_homo_werks。

             lwa_goodsmvt_item-move_plant = lwa_homo_werks-zwerksd。
             lwa_goodsmvt_item-move_stloc = lwa_homo_werks-zlgortd。

           万一。

         万一。

     读取表lti_t001k并使用键bwkey = lwa_goodsmvt_item-plant进入lwa_T001k
     lv_bukrs = lwa_T001k-bukrs。

         清除:lv_param_id,lv_bukrs。
         lv_param_id ='LOTE'。

         清除:lwa_parameters,lv_sysubrc。
         zcl_bc_parameters => get_parameter(" #EC CI_SEL_NESTED或" #EC CI_SROFC_NESTED
          出口
            im_v_wricef ='IM_LOTELR'
            im_v_id = lv_param_id
            im_v_bukrs = lv_bukrs
          输入
            ex_wa_param = lwa_parameters
            ex_v_subrc = lv_sysubrc)。


         如果lwa_parameters-valor <>空间。
           lwa_goodsmvt_item-batch = lwa_parameters-valor。
           lwa_goodsmvt_item-move_batch = lwa_parameters-valor。
         万一。

         lwa_goodsmvt_item-entry_qnt =  -candidad。

         通话功能'CONVERSION_EXIT_CUNIT_INPUT'## FM_SUBRC_OK
           出口
             输入=  -unidad_medida
             语言= sy-langu
           输入
             输出= lwa_goodsmvt_item-entry_uom
           例外情况
             unit_not_found = 1
             其他= 2。

         将lwa_goodsmvt_item附加到lti_goodsmvt_item。
       结局。

       刷新:lti_return。
       清除:lv_materialdocument,lv_matdocumentyear。
       通话功能'BAPI_GOODSMVT_CREATE'
         出口
           goodsmvt_header = lwa_goodsmvt_header
           goodsmvt_code ='04'
         输入
           materialdocument = lv_materialdocument
           matdocumentyear = lv_matdocumentyear
         桌子
           goodsmvt_item = lti_goodsmvt_item
           return = lti_return。

如果我们在测试运行中执行它,则可以完美运行,返回表为空,看起来好像成功了,但是如果我们进行了真实运行,则会收到以下错误消息" VL581-分配一个 收货指向"内向交货",我不完全确定如何处理上述错误,也许我们缺少BAPI中的一些关键数据,或者系统缺少某种配置,但是用户告诉我们他可以手动进行操作 毫无问题地在MIGO交易中创建此转帐。

我设法在程序" SAPMV50A"的此INCLUDE" FV50XF0B_INB_DELIV_REC_POINT_C"中跟踪该错误,似乎与表LIKP有关,但不确定在这种情况下为什么要分配该数据。

任何帮助将不胜感激。

其他信息:

我们正在检查的示例使用的移动类型为" 301",可能会影响BAPI行为

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

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


问候专家

我被要求检查一个有助于使用BAPI BAPI_GOODSMVT_CREATE进行货物转移的客户端程序,但是由于某些原因,该程序失败了,即使这是另一个程序的副本,该程序可以使用相同的BAPI完美地工作,但对于"商品" 问题",我想知道是我们是否正确填充数据还是丢失一些关键数据,这是程序正在执行的当前逻辑:

刷新:lti_goodsmvt_item。
       lwa_goodsmvt_header-gr_gi_slip_no = gwa_movimiento_im-no_documento。
       循环播放im_o_md-> gwa_ajuste_inventario-movimientos []
               ASSIGNING FIELD-SYMBOL()##需要" #EC CI_CALLTA
               在哪里no_documento = gwa_movimiento_im-no_documento。

         清除:lv_fecha。
         lv_fecha =  -fecha_movimiento。
         凝聚lv_fecha NO-GAPS。
         lwa_goodsmvt_header-pstng_date = lv_fecha + 0(8)。

         清除:lv_fecha。
         lv_fecha =  -fecha_movimiento。
         凝聚lv_fecha NO-GAPS。
         lwa_goodsmvt_header-doc_date = lv_fecha + 0(8)。

         lwa_goodsmvt_header-header_txt =  -no_transferencia_alpina。

         清除:lwa_goodsmvt_item,gv_flag。
         使用键material_ean =  -material_ean将表gtd_materiales读入DATA(lwa_materiales)。
         如果sy-subrc = 0。
           lwa_goodsmvt_item-material = lwa_materiales-描述。
           lwa_goodsmvt_item-move_mat = lwa_materiales-descripcion。
         万一。

         使用键因果关系= -因果关系将表gtd_causal读入数据(lwa_causal)。
         如果sy-subrc = 0。
           lwa_goodsmvt_item-move_type = lwa_causal-no_documento。
           lwa_goodsmvt_item-move_reas = lwa_causal-no_transferencia_alpina。
         万一。

         转换时间戳记 -fecha_vencimiento时区sy-zonlo INTO DATE lwa_goodsmvt_item-expirydate。

         清除:lwa_homo_werks。
     读取表lti_homo_werks使用键zwerkslr =  -org_origen进入lwa_homo_werks。

         读取表ltd_causal使用键Casual = -因果进入数据(lwa_causal_1)。
         如果sy-subrc = 0。

           如果 -org_destino =空间。

             案例lwa_causal_1-devol。
               当" X"时。
                 lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
                 lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。
                 lwa_goodsmvt_item-move_plant = lwa_homo_werks-zwerkso。
                 lwa_goodsmvt_item-move_stloc = lwa_homo_werks-zlgorto。

               当别人。
                 lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
                 lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。

             结束。

           其他。

             lwa_goodsmvt_item-plant = lwa_homo_werks-zwerksd。
             lwa_goodsmvt_item-stge_loc = lwa_homo_werks-zlgortd。

             清除:lwa_homo_werks。
             读取表lti_homo_werks使用键zwerkslr =  -org_destino进入lwa_homo_werks。

             lwa_goodsmvt_item-move_plant = lwa_homo_werks-zwerksd。
             lwa_goodsmvt_item-move_stloc = lwa_homo_werks-zlgortd。

           万一。

         万一。

     读取表lti_t001k并使用键bwkey = lwa_goodsmvt_item-plant进入lwa_T001k
     lv_bukrs = lwa_T001k-bukrs。

         清除:lv_param_id,lv_bukrs。
         lv_param_id ='LOTE'。

         清除:lwa_parameters,lv_sysubrc。
         zcl_bc_parameters => get_parameter(" #EC CI_SEL_NESTED或" #EC CI_SROFC_NESTED
          出口
            im_v_wricef ='IM_LOTELR'
            im_v_id = lv_param_id
            im_v_bukrs = lv_bukrs
          输入
            ex_wa_param = lwa_parameters
            ex_v_subrc = lv_sysubrc)。


         如果lwa_parameters-valor <>空间。
           lwa_goodsmvt_item-batch = lwa_parameters-valor。
           lwa_goodsmvt_item-move_batch = lwa_parameters-valor。
         万一。

         lwa_goodsmvt_item-entry_qnt =  -candidad。

         通话功能'CONVERSION_EXIT_CUNIT_INPUT'## FM_SUBRC_OK
           出口
             输入=  -unidad_medida
             语言= sy-langu
           输入
             输出= lwa_goodsmvt_item-entry_uom
           例外情况
             unit_not_found = 1
             其他= 2。

         将lwa_goodsmvt_item附加到lti_goodsmvt_item。
       结局。

       刷新:lti_return。
       清除:lv_materialdocument,lv_matdocumentyear。
       通话功能'BAPI_GOODSMVT_CREATE'
         出口
           goodsmvt_header = lwa_goodsmvt_header
           goodsmvt_code ='04'
         输入
           materialdocument = lv_materialdocument
           matdocumentyear = lv_matdocumentyear
         桌子
           goodsmvt_item = lti_goodsmvt_item
           return = lti_return。

如果我们在测试运行中执行它,则可以完美运行,返回表为空,看起来好像成功了,但是如果我们进行了真实运行,则会收到以下错误消息" VL581-分配一个 收货指向"内向交货",我不完全确定如何处理上述错误,也许我们缺少BAPI中的一些关键数据,或者系统缺少某种配置,但是用户告诉我们他可以手动进行操作 毫无问题地在MIGO交易中创建此转帐。

我设法在程序" SAPMV50A"的此INCLUDE" FV50XF0B_INB_DELIV_REC_POINT_C"中跟踪该错误,似乎与表LIKP有关,但不确定在这种情况下为什么要分配该数据。

任何帮助将不胜感激。

其他信息:

我们正在检查的示例使用的移动类型为" 301",可能会影响BAPI行为

付费偷看设置
发送
5条回答
我是小鹏鹏啊
1楼-- · 2020-09-07 17:02

您是否尝试使用" SAP ERROR VL581"搜索该错误?

如果您在收货仓库中激活了仓库管理(WM),则可以看到该错误。

在这种情况下,WM需要一个接收点来分配物料。

代楠1984
2楼-- · 2020-09-07 16:58

在代码i中包含接收工厂,即MOVE_PLANT

My梦
3楼-- · 2020-09-07 17:00

嗨,

我认为系统会尝试强化良好的接收点。 在分配收货点之前,必须定义工厂和存储地点。 您可以在企业结构的结构维护中找到有关此信息,在企业结构的结构中定义了一般物流和物料管理区域中的工厂和存储地点。

问候,

Nawa。

空代码
4楼-- · 2020-09-07 17:03

感谢Aishwarya,但是您提到的字段当前正在代码中填充,根据用户的使用,我们所使用的信息是正确的

jovirus
5楼-- · 2020-09-07 17:14
< p>您好 Ronald Atuesta Cadena

如果仓库在仓库管理之下,请咨询您的MM代理人或检查 自定义如此处所述 :如果是这样,则无法使用BAPI来移动物料,但是必须在它们之间创建转储单(FM L_TO_ *),并在自动确认未激活时确认它们。

一周热门 更多>