动态处理空值作为BAPI-X结构的输入。

2020-08-17 15:29发布

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

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


大家好,

请问如何为bapix结构输入空值/0/空格。

为了更加准确,请找到以下示例。

BAPI:BAPI_MATERIAL_SAVEREPLICA

XCHPF字段(仅接受" X"或"")。

当前,我正在如下更新plantdatax-xchpf:

 lw-xchpf ='X'。
 将lw附加到lt_plant。

 如果lw-xchpf不是初始的。
  lw_plantx-xchpf ='X'。
 万一。
 将lw_plantx附加到lt_plantx。
 

以上工作正常。 (注意:我正在尝试使解决方案具有动态性)

现在,我有一种情况需要将值更新为null。

 lw-xchpf =''。
 将lw附加到lt_plant。

 如果lw-xchpf不是初始的。  " ------这引起了问题
  lw_plantx-xchpf ='X'。
 万一。
 将lw_plantx附加到lt_plantx。

预先感谢。

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

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


大家好,

请问如何为bapix结构输入空值/0/空格。

为了更加准确,请找到以下示例。

BAPI:BAPI_MATERIAL_SAVEREPLICA

XCHPF字段(仅接受" X"或"")。

当前,我正在如下更新plantdatax-xchpf:

 lw-xchpf ='X'。
 将lw附加到lt_plant。

 如果lw-xchpf不是初始的。
  lw_plantx-xchpf ='X'。
 万一。
 将lw_plantx附加到lt_plantx。
 

以上工作正常。 (注意:我正在尝试使解决方案具有动态性)

现在,我有一种情况需要将值更新为null。

 lw-xchpf =''。
 将lw附加到lt_plant。

 如果lw-xchpf不是初始的。  " ------这引起了问题
  lw_plantx-xchpf ='X'。
 万一。
 将lw_plantx附加到lt_plantx。

预先感谢。

付费偷看设置
发送
3条回答
奄奄一息的小鱼
1楼-- · 2020-08-17 15:58

您好 Madhumahesh Thorati

您可以编写使用ABAP的方法(或过程) RTTI为此。 示例:

 CLASS lcl_test定义。
   公共部分。
     类方法:
       mark_x
         输入
           iv_filled_only TYPE标志
           is_structure TYPE任何
         改变
           cs_structure_x TYPE任意。
 ENDCLASS。

 CLASS lcl_test实施。
   方法mark_x。
     数据:
       lo_type_table类型参考cl_abap_tabledescr,
       lo_type_structure类型参考cl_abap_structdescr。

     DATA(lo_type)= cl_abap_typedescr => describe_by_data(p_data = is_structure)。
     CASE lo_type->种类。
       当cl_abap_typedescr => kind_struct时。
         lo_type_structure?= lo_type。
     结束。
     检查lo_type_structure是否绑定。

     DATA(lt_components)= lo_type_structure-> get_components()。
     循环到lt_components引用到DATA(ld_component)。
       分配组件ld_component->结构名称cs_structure_x到FIELD-SYMBOL()。
       检查sy-subrc = 0。

       如果iv_filled_only = abap_true。
         分配组件ld_component->结构名称is_structure为FIELD-SYMBOL()。
         检查sy-subrc = 0
           AND 不是初始的。
       万一。

        = abap_true。
     结局。
   终结法。
 ENDCLASS。

 "那么,用法
 如果某物= abap_true或某物= abap_true。
   lv_filled_only = abap_true。
 其他。
   lv_filled_only = abap_false。
 万一。

 lcl_test => mark_x(
   导出iv_filled_only = lv_filled_only is_structure = ls_values
   更改cs_structure_x = ls_values_x)。

示例中的LS_VALUES结构不必与BAPI的values结构相同。 它可以是任何类型的结构。 重要的是至少其某些字段与BAPI的结构具有相同的名称。 这些字段的X将用MARK_X方法填充。

问候,

Mateusz

Tong__Ming
2楼-- · 2020-08-17 15:54

您遇到什么问题? ("如果lw-xchpf不是最初的...引起问题"不是症状)

您说"空值/0/空格",这很不精确,您能解释一下您的意思吗? (为什么要使用不同的术语?)

派大星 ヾ
3楼-- · 2020-08-17 15:59

嗨,Sandra Rossi,

我的意思是考虑到更新bapix结构的if条件,如何传递空值作为输入。

一周热门 更多>