VA01,VL01N中如何获得header/item text中的值
1、无论采用哪种方法获得text的值,我们都应该首先知道text name, lanaguage, text ID, text object。关于如何获取这些信息,可以参考本人的另外一篇经验“如何查找SO item text的Text ID/Object”。
2、如果Sales Order/Outbound Delivery已经生成,也就是order number, Delivery number已经生成并保存在了数据库中。那么就使用FM READ_TEXT或SELECT_TEXT。READ_TEXT跟SELECT_TEXT这两个FM的不同之处在于,SELECT_TEXT只能判断text中是否有值,不能像READ_TEXT一样获得具体的值。READ_TEXT的使用如图所示,需要用到Text Name, Text ID, Text Object, Language.
3、如果是在VA01, VL01N中想获得text的值,因为这个时候Sales Order/Outbound Delivery还没有实际生成,也就是还没有保存到数据库中,只是存在于内存中,这种情况下,text的值就只能在ABAP meomory中取了,可以使用的FM为GET_TEXT_MEMORY
4、FM GET_TEXT_MEMORY的用法,如图所示,在调用该FM的时候会获得ABAP memory中的信息,保存到内表lt_txt_memory中。
5、内表lt_txt_memory中的数据如图所示,可以看到在这个内表中保存了outbound delivery item text和 head髫潋啜缅er text的信息。其中字段TDNAME的值,如果为 XXXXXXXXXX000010这种格式的代表是item text, 而XXXXXXXXXX这种格式的代表为header text。 字段IDID代表 Text ID, TDSPRAS代表 Lanaguage, TDOBJECT代表text object。
6、接下来如果我们想获得具体的某个text的值,那么首先需要从内表lt_txt_memory中的ID字段中找到memory ID,然后通过IMPORT.. TO.. from memory ID ...语句获得具体的值。代码如图所示。