2020-09-18 15:53发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我是一名Java开发人员,我在ABAP中没有任何经验。 但是在ABAP中已经为我分配了一项任务。 我需要创建一个动态内部表,该表必须包含数据库表的所有列,但是根据要求,我必须在创建后删除动态表的某些列。 问题是动态表应该与我已经完成的数据库表的所有列一起创建。 但是现在我必须删除一些列在字符串中的列。 我不知道该怎么做。
好的,我最初的想法是正确的,您正在尝试过度设计解决方案。 因为它在接口中,所以数据结构无关紧要。 特定于ABAP的数据类型是不行的,因此您不妨使用CHAR1024表并将所需的结构连接到每一行。
但是,当您使用http发送数据时,通常的格式是XML或JSON。 因此,实际上是要获取所需的数据,使用应用程序执行的操作来丰富数据,然后使用简单的转换将其转换为XML或JSON的问题。 这些都是ABAP中可用的所有标准功能,建议从doco开始:
https://help.sap .com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file = abenabap_data_communication.htm
然后在这里也有很多博客,只是搜索ABAP和XML/JSON,无论您愿意使用什么。
我的第一个想法是,您正在尝试应用Java。 解决ABAP问题。 也许您应该先解释一下您实际要完成的工作。
嗨,
我认为您希望显示较少的列,因此只需将它们从ALV列表中删除。
或者您可以在屏幕上选择自定义布局,您必须保留哪些列。
嗨,麦克,
我有一个Java程序,它将调用一些RFC并传递表名及其元数据信息。 在abap方面,我将使用数据库表的所有列创建一个动态表。 现在,无论我通过Java传递的是什么列,我都将这些列保留在动态表中,其余的列将删除。 之后,我将打开一个游标,并从数据库表中获取所有数据,并将其存储在动态表中,对于将要存储在动态表中的每一行,我将通过计算将这一行放入流水线缓冲区中并发送该缓冲区 通过HTTP_SEND访问Java程序。
之前,我仅使用必需的列创建了动态表,并且我的程序运行良好。 我们将其用于所有系统,例如:sap netweaver 7.5,g00等。
现在,树液添加了一些新的数据类型,例如:DF34_RAW,DF16_RAW,DF34_DEC,DF16_DEC。 netweaver 7.5仅支持这些数据类型。 现在,如果我通过使用CL_ABAP_ELEMDESCR => GET_DECFLOAT16()和CL_ABAP_ELEMDESCR => GET_DECFLOAT34()创建具有这些数据类型的动态表,则它将在netweaver 7.5系统上正常运行,但不适用于g00系统或其他系统。 因为GET_DECFLOAT16()方法不适用于g00或其他系统。
所以现在我要通过使用cl_abap_typedescr => describe_by_name(TABLENAME)创建动态表
它将数据库表的所有结构和所有列分配给动态表。 在游标中,我们有一些WHERE子句,因为该游标无法将所有列都保留在动态表中。 我们只需要保留必需的列,其余的列我必须删除。
我有要删除的列的列表,但我不知道如何删除这些列?
如果是静态表,我们可以使用新的Value构造函数 ,可能吗?
最多设置5个标签!
好的,我最初的想法是正确的,您正在尝试过度设计解决方案。 因为它在接口中,所以数据结构无关紧要。 特定于ABAP的数据类型是不行的,因此您不妨使用CHAR1024表并将所需的结构连接到每一行。
但是,当您使用http发送数据时,通常的格式是XML或JSON。 因此,实际上是要获取所需的数据,使用应用程序执行的操作来丰富数据,然后使用简单的转换将其转换为XML或JSON的问题。 这些都是ABAP中可用的所有标准功能,建议从doco开始:
https://help.sap .com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file = abenabap_data_communication.htm
然后在这里也有很多博客,只是搜索ABAP和XML/JSON,无论您愿意使用什么。
我的第一个想法是,您正在尝试应用Java。 解决ABAP问题。 也许您应该先解释一下您实际要完成的工作。
嗨,
我认为您希望显示较少的列,因此只需将它们从ALV列表中删除。
或者您可以在屏幕上选择自定义布局,您必须保留哪些列。
嗨,麦克,
我有一个Java程序,它将调用一些RFC并传递表名及其元数据信息。 在abap方面,我将使用数据库表的所有列创建一个动态表。 现在,无论我通过Java传递的是什么列,我都将这些列保留在动态表中,其余的列将删除。 之后,我将打开一个游标,并从数据库表中获取所有数据,并将其存储在动态表中,对于将要存储在动态表中的每一行,我将通过计算将这一行放入流水线缓冲区中并发送该缓冲区 通过HTTP_SEND访问Java程序。
之前,我仅使用必需的列创建了动态表,并且我的程序运行良好。 我们将其用于所有系统,例如:sap netweaver 7.5,g00等。
现在,树液添加了一些新的数据类型,例如:DF34_RAW,DF16_RAW,DF34_DEC,DF16_DEC。 netweaver 7.5仅支持这些数据类型。 现在,如果我通过使用CL_ABAP_ELEMDESCR => GET_DECFLOAT16()和CL_ABAP_ELEMDESCR => GET_DECFLOAT34()创建具有这些数据类型的动态表,则它将在netweaver 7.5系统上正常运行,但不适用于g00系统或其他系统。 因为GET_DECFLOAT16()方法不适用于g00或其他系统。
所以现在我要通过使用cl_abap_typedescr => describe_by_name(TABLENAME)创建动态表
它将数据库表的所有结构和所有列分配给动态表。 在游标中,我们有一些WHERE子句,因为该游标无法将所有列都保留在动态表中。 我们只需要保留必需的列,其余的列我必须删除。
我有要删除的列的列表,但我不知道如何删除这些列?
如果是静态表,我们可以使用新的Value构造函数 ,可能吗?
一周热门 更多>