BAPI BAPI_GOODSMVT_CREATE中的转移过帐问题

2020-09-07 16:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)问候专家 我被要求检查一个有助...

         点击此处--->   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行为