ABAP报表开发
我想在SE38中编写一个ABAP报表,抓取MM03中的料号、名称及规格信息,但由于规格属于长内文,需要调用Read_text函数,不知道怎么和物料号码联系起来callfu...
我想在SE38中编写一个ABAP报表,抓取MM03中的料号、名称及规格信息,但由于规格属于长内文,需要调用Read_text函数,不知道怎么和物料号码联系起来call function,可否请哪位大哥大姐帮忙给个实例啊?万分感谢~~
我要显示的信息如下:
物料号码 物料名称 内文
AFD2008AC 成品1 测试内文1
AFD2009AC 成品2 测试内文2
FSA1001 原材料 测试内文3
AFA1111 半成品 测试内文4
以下是显示一个料号(AFD2008AC)的内文程序,请问怎么样和MM03中的所有物料联系起来呢?请高手指点,谢谢!
REPORT YTEST.
data: itab_head like thead ,
itab_line like tline occurs 0 with header line .
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = 'BEST'
LANGUAGE = SY-LANGU
NAME = 'AFD2008AC'
OBJECT = 'MATERIAL'
IMPORTING
HEADER = itab_head
TABLES
LINES = itab_line
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
Loop at itab_line.
write :/ itab_line-tdline.
endloop .
楼下的朋友,谢谢你的回答,单独显示一个的我会,我是想知道怎么样和所有的联系起来,就是一次性读取所有的物料和内文?请帮忙,谢谢 展开
我要显示的信息如下:
物料号码 物料名称 内文
AFD2008AC 成品1 测试内文1
AFD2009AC 成品2 测试内文2
FSA1001 原材料 测试内文3
AFA1111 半成品 测试内文4
以下是显示一个料号(AFD2008AC)的内文程序,请问怎么样和MM03中的所有物料联系起来呢?请高手指点,谢谢!
REPORT YTEST.
data: itab_head like thead ,
itab_line like tline occurs 0 with header line .
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = 'BEST'
LANGUAGE = SY-LANGU
NAME = 'AFD2008AC'
OBJECT = 'MATERIAL'
IMPORTING
HEADER = itab_head
TABLES
LINES = itab_line
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
Loop at itab_line.
write :/ itab_line-tdline.
endloop .
楼下的朋友,谢谢你的回答,单独显示一个的我会,我是想知道怎么样和所有的联系起来,就是一次性读取所有的物料和内文?请帮忙,谢谢 展开
展开全部
1.1. 长文本处理
1.1.1. 读取长文本
这里以抓取Delivery Note的Item上的长文本作为例子。
1.1.1.1. 查找长文本的Text ID,Text Object
VL02N修改Delivery Note: 80000023
按回车键或者点击 ,
选中要一行资料,然后点击菜单Goto->Item->Texts
点击 ,
然后点击菜单:Goto->Header
在这里显示的Text ID:0001,Text Object:VBBP,以及Text Name:0080000023000010,这几个字段在后面取值时要使用到
1.1.1.2. 编写程序
*&---------------------------------------------------------------------*
*& Report Y10028
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Y10028.
DATA IT_DATA TYPE STANDARD TABLE OF TLINE .
DATA W_DATA TYPE TLINE.
DATA ID LIKE THEAD-TDID.
DATA LANGUAGE LIKE THEAD-TDSPRAS.
DATA NAME LIKE THEAD-TDNAME.
DATA OBJECT LIKE THEAD-TDOBJECT.
START-OF-SELECTION.
ID = '0001'.
LANGUAGE = 'EN'.
NAME = '0080000023000010'.
OBJECT = 'VBBP'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = ID
LANGUAGE = LANGUAGE
NAME = NAME
OBJECT = OBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
LINES = IT_DATA
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_DATA INTO W_DATA.
WRITE:/ W_DATA-TDLINE.
ENDLOOP.
1.1.1.3. 显示结果
1.1.2. 写入长文本
有时需要将其他的系统的资料Upload到长文本字段中,或者将资料从文字档、Excel档Upload到长文本字段中,使用BDC比较麻烦,这个时候可以使用SAVE_TEXT Function来写入长文本。查找Text ID,Text Object的方法在上一个章节已经说明,这里不再重复。
REPORT Y10028.
DATA HEADER LIKE THEAD.
DATA LINES TYPE STANDARD TABLE OF TLINE .
DATA W_LINE TYPE TLINE.
START-OF-SELECTION.
HEADER-TDOBJECT = 'VBBP'.
HEADER-TDNAME = '0080000023000010'.
HEADER-TDID = '0001'.
HEADER-TDSPRAS = 'EN'.
W_LINE = '测试资料写入'.
APPEND W_LINE TO LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
* CLIENT = SY-MANDT
HEADER = HEADER
INSERT = 'X'
SAVEMODE_DIRECT = 'X'
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
结果显示为:
1.1.3. 删除长文本
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = ID
LANGUAGE = LANGUAGE
NAME = NAME
OBJECT = OBJECT
* SAVEMODE_DIRECT = ' '
* TEXTMEMORY_ONLY = ' '
* LOCAL_CAT = ' '
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
1.1.1. 读取长文本
这里以抓取Delivery Note的Item上的长文本作为例子。
1.1.1.1. 查找长文本的Text ID,Text Object
VL02N修改Delivery Note: 80000023
按回车键或者点击 ,
选中要一行资料,然后点击菜单Goto->Item->Texts
点击 ,
然后点击菜单:Goto->Header
在这里显示的Text ID:0001,Text Object:VBBP,以及Text Name:0080000023000010,这几个字段在后面取值时要使用到
1.1.1.2. 编写程序
*&---------------------------------------------------------------------*
*& Report Y10028
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Y10028.
DATA IT_DATA TYPE STANDARD TABLE OF TLINE .
DATA W_DATA TYPE TLINE.
DATA ID LIKE THEAD-TDID.
DATA LANGUAGE LIKE THEAD-TDSPRAS.
DATA NAME LIKE THEAD-TDNAME.
DATA OBJECT LIKE THEAD-TDOBJECT.
START-OF-SELECTION.
ID = '0001'.
LANGUAGE = 'EN'.
NAME = '0080000023000010'.
OBJECT = 'VBBP'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = ID
LANGUAGE = LANGUAGE
NAME = NAME
OBJECT = OBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
LINES = IT_DATA
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_DATA INTO W_DATA.
WRITE:/ W_DATA-TDLINE.
ENDLOOP.
1.1.1.3. 显示结果
1.1.2. 写入长文本
有时需要将其他的系统的资料Upload到长文本字段中,或者将资料从文字档、Excel档Upload到长文本字段中,使用BDC比较麻烦,这个时候可以使用SAVE_TEXT Function来写入长文本。查找Text ID,Text Object的方法在上一个章节已经说明,这里不再重复。
REPORT Y10028.
DATA HEADER LIKE THEAD.
DATA LINES TYPE STANDARD TABLE OF TLINE .
DATA W_LINE TYPE TLINE.
START-OF-SELECTION.
HEADER-TDOBJECT = 'VBBP'.
HEADER-TDNAME = '0080000023000010'.
HEADER-TDID = '0001'.
HEADER-TDSPRAS = 'EN'.
W_LINE = '测试资料写入'.
APPEND W_LINE TO LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
* CLIENT = SY-MANDT
HEADER = HEADER
INSERT = 'X'
SAVEMODE_DIRECT = 'X'
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
结果显示为:
1.1.3. 删除长文本
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = ID
LANGUAGE = LANGUAGE
NAME = NAME
OBJECT = OBJECT
* SAVEMODE_DIRECT = ' '
* TEXTMEMORY_ONLY = ' '
* LOCAL_CAT = ' '
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
展开全部
把你的
物料号码 物料名称
AFD2008AC 成品1
AFD2009AC 成品2
FSA1001 原材料
AFA1111 半成品
放到一个内标GT_TAB
LOOP GT_TAB.
CALL FUNCTION 'READ_TEXT'
然后把读出来的值赋给你的内文字段
MODIFY GT_TAB.
ENDLOOP.
物料号码 物料名称
AFD2008AC 成品1
AFD2009AC 成品2
FSA1001 原材料
AFA1111 半成品
放到一个内标GT_TAB
LOOP GT_TAB.
CALL FUNCTION 'READ_TEXT'
然后把读出来的值赋给你的内文字段
MODIFY GT_TAB.
ENDLOOP.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有什么好方法,只能一个物料一个物料的去取了。规格信息是哪个view里的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询