2020-09-08 08:07发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我想根据输入的字段动态获取wda alv列的数量。
就像我在输入文件中输入日期一样,如果我输入3个月,我的alv中需要3列,
如果我花4个月作为输入,我的alv中需要4列。
请帮忙。
谢谢
您好Kashiap,
ALV中的列将基于节点中的ATTRIBUTE,即节点的每个属性都链接到ALV表中的各个列。
现在可以有多种情况:
1。 您要显示的ALV中的列已链接到某些标准后端表/结构。
2。 ALV中的列仅供最终用户使用,不与任何后端表/结构映射,在ALV中输入的数据将进一步用于某些计算,然后转储到DB表中或其他位置。
在下面的示例中,我将节点的名称保留为" ND_TABLE"。
LIST_OF_ALL_FIELDS_OF_TBL_STR表示任何表/结构中的字段列表。
WA_OF_ALL_FIELDS_OF_TBL_STR表示上述表/结构的工作区。
LV_COUNT是用户输入,即所需的列数。
数据lo_nd_nd_table类型参考if_wd_context_node。
数据lo_nd_nd_table_info类型参考if_wd_context_node_info。
数据lv_attribute类型wdr_context_attribute_info。
lo_nd_nd_table = wd_context-> get_child_node(名称= wd_this-> wdctx_nd_table)。 lo_nd_nd_table_info = lo_nd_nd_table-> get_node_info()。
将" LIST_OF_ALL_FIELDS_OF_TBL_STR"放入" WA_OF_ALL_FIELDS_OF_TBL_STR"。
lv_attribute-name = WA_OF_ALL_FIELDS_OF_TBL_STR-NAME
lv_attribute-type_name = WA_OF_ALL_FIELDS_OF_TBL_STR-TYPE_NAME。
呼叫方法lo_nd_nd_table_info-> add_attribute(导出attribute_info = lv_attribute)。
如果是sy-tabix EQ LV_COUNT。
退出。
ENDIF。 ENDLOOP。
如果没有任何表或结构链接到我们的ALV表,那么我们可以使用DO语句来代替LOOP语句,如下所示。
DATA lv_index TYPE C VALUE 1。
执行LV_COUNT次。
CONCATENATE'ATT'lv_index INTO lv_attribute-name用'_'分隔。 lv_attribute-type_name ='CHAR30'。调用方法lo_nd_nd_table_info-> add_attribute(导出attribute_info = lv_attribute)。 > lv_index = lv_index +1。
ENDDO。
请告诉我这种方法是否适合您。
此致
Harish
因此,最好使用RTS类创建动态内部表,使用if_wd_context_node_info-> add_new_child_node将新节点添加到根节点
最多设置5个标签!
您好Kashiap,
ALV中的列将基于节点中的ATTRIBUTE,即节点的每个属性都链接到ALV表中的各个列。
现在可以有多种情况:
1。 您要显示的ALV中的列已链接到某些标准后端表/结构。
2。 ALV中的列仅供最终用户使用,不与任何后端表/结构映射,在ALV中输入的数据将进一步用于某些计算,然后转储到DB表中或其他位置。
在下面的示例中,我将节点的名称保留为" ND_TABLE"。
LIST_OF_ALL_FIELDS_OF_TBL_STR表示任何表/结构中的字段列表。
WA_OF_ALL_FIELDS_OF_TBL_STR表示上述表/结构的工作区。
LV_COUNT是用户输入,即所需的列数。
数据lo_nd_nd_table类型参考if_wd_context_node。
数据lo_nd_nd_table_info类型参考if_wd_context_node_info。
数据lv_attribute类型wdr_context_attribute_info。
lo_nd_nd_table = wd_context-> get_child_node(名称= wd_this-> wdctx_nd_table)。
lo_nd_nd_table_info = lo_nd_nd_table-> get_node_info()。
将" LIST_OF_ALL_FIELDS_OF_TBL_STR"放入" WA_OF_ALL_FIELDS_OF_TBL_STR"。
lv_attribute-name = WA_OF_ALL_FIELDS_OF_TBL_STR-NAME
lv_attribute-type_name = WA_OF_ALL_FIELDS_OF_TBL_STR-TYPE_NAME。
呼叫方法lo_nd_nd_table_info-> add_attribute(导出attribute_info = lv_attribute)。
如果是sy-tabix EQ LV_COUNT。
退出。
ENDIF。
ENDLOOP。
如果没有任何表或结构链接到我们的ALV表,那么我们可以使用DO语句来代替LOOP语句,如下所示。
DATA lv_index TYPE C VALUE 1。
执行LV_COUNT次。
CONCATENATE'ATT'lv_index INTO lv_attribute-name用'_'分隔。
lv_attribute-type_name ='CHAR30'。
调用方法lo_nd_nd_table_info-> add_attribute(导出attribute_info = lv_attribute)。
> lv_index = lv_index +1。
ENDDO。
请告诉我这种方法是否适合您。
此致
Harish
因此,最好使用RTS类创建动态内部表,使用if_wd_context_node_info-> add_new_child_node将新节点添加到根节点
一周热门 更多>