通知单的透明表:
VIQMEL 视图,通知单的主要属性
Qmsm 任务表
Qmur 主题
Qmih 故障表
Qmel 主表
Qmfe 项目 (长文本 缺陷定位 等)
T356_t 优先级
Qpgt 代码组文本 qpct 代码文本
目录的定义(KATALOGART):
一,长文本
长文本的存储位置: 抬头:STXH 行项目:STXL
关键字:TDNAME,TDOBJECT, TDID ,TDSPRAS
TDNAME : 号码
TDOBJECT : (同一类对象的 tdobject 都相同)
TDID : ?
TDSPRAS :语言
由于长文本数据保存在 STXL 不能正常读取,所有应该利用一个函数 :
READ_TEXT
我们调用它,并且提供上述的几个参数即刻读取到指定的长文本。由于长文本很长,所以我们读取出来的数据可能是很多条数据。所以我们需要遍历读取到的数据,然后进行拼接。
保存用另一个函数 save_text ,只是用这个函数保存至今还没有保存成功。
例子: 通知单的长文本分为五类:抬头,原因,工序,结果,评估
类别 | Tdname | Tdobject | Tdid | tdspras | 备注 |
抬头 | 通知单号 | QMEL | LTXT |
|
|
原因 | 通知单号+qmfe-fenum | QMFE | LTXT |
| Qmfe-fecod = 0010 |
工序 | 通知单号+qmfe-fenum | QMFE | LTXT |
| Qmfe-fecod = 0020 |
结果 | 通知单号+qmfe-fenum | QMFE | LTXT |
| Qmfe-fecod = 0030 |
评估 | 通知单号+qmfe-fenum | QMFE | LTXT |
| Qmfe-fecod = 0040 |
代码实例:
TYPES: BEGIN OF ty_text,
qmnum LIKE qmel-qmnum, "通知单号
fenum LIKE qmfe-fenum,
fecod LIKE qmfe-fecod,
kurztext(20) TYPE c,
text(1000) TYPE c, "
END OF
DATA: gt_text TYPE TABLE OF ty_text,
gs_text TYPE
FORM get_text2 USING v_qmnum.
DATA: td_name LIKE stxh-tdname,
fenum LIKE qmfe-fenum,
l_qmnum(12) TYPE c,
c_fenum(4) TYPE c
.
DATA itab_line LIKE tline OCCURS 0 WITH HEADER LINE.
CLEAR: gt_text,gs_text.
SELECT a~qmnum a~fenum a~fecod b~kurztext
INTO CORRESPONDING FIELDS OF TABLE gt_text
FROM qmfe AS a
INNER JOIN qpct AS b
ON a~fekat = b~katalogart
AND a~fegrp = b~codegruppe
AND a~fever = b~version
AND a~fecod = b~code
WHERE a~qmnum = v_qmnum
AND a~indtx = 'X'
AND b~sprache = 1
AND b~katalogart = 'C'
AND b~codegruppe = 'CLM-01'
AND b~version = '000001'
.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_qmnum
IMPORTING
output = l_qmnum.
IF sy-subrc = 0.
LOOP AT gt_text INTO gs_text.
c_fenum = gs_text-fenum.
PERFORM zero_do USING c_fenum 4.
CONCATENATE l_qmnum c_fenum INTO td_name.
CLEAR itab_line. REFRESH itab_line.
CALL FUNCTION 'READ_TEXT' " 读取通知内容长文本
EXPORTING
client = sy-mandt
id = 'LTXT'
language = sy-langu
name = td_name
object = 'QMFE'
TABLES
lines = itab_line
EXCEPTIONS
not_found = 4.
IF sy-subrc = 0.
LOOP AT itab_line.
CONCATENATE gs_text-text itab_line-tdline INTO gs_text-text. "把多行长文本加在一起
ENDLOOP.
MODIFY gt_text FROM gs_text.
ENDIF.
ENDLOOP.
ENDIF.
td_name = l_qmnum.
CLEAR itab_line. REFRESH itab_line.
CALL FUNCTION 'READ_TEXT' " 读取通知内容长文本
EXPORTING
client = sy-mandt
id = 'LTXT'
language = sy-langu
name = td_name
object = 'QMEL'
TABLES
lines = itab_line
EXCEPTIONS
not_found = 4.
IF sy-subrc = 0.
CLEAR gs_text.
LOOP AT itab_line.
CONCATENATE gs_text-text itab_line-tdline INTO gs_text-text. "把多行长文本加在一起
ENDLOOP.
gs_text-qmnum = v_qmnum.
gs_text-fecod = '0000'.
gs_text-kurztext = '抬头长文本'.
APPEND gs_text TO gt_text.
ENDIF.
ENDFORM.
二,合作伙伴
Ihpa 合作伙伴 (QM+通知单号 关联 通知单)
Tpar 合伙人 角色定义(合作伙伴功能及描述,合作伙伴编号类型)
TVPA 合作伙伴编号类型表 (合作伙伴编号类型及描述,对应的数据表格)
tpart 合作伙伴功能定义文本
Objnr = QM+通知单号 objty = QMC
合作伙伴定义如下(PARVW):
读取方法:
首先通过 PM_Partner_get 获得合作伙伴列表
参数:Objnr = QM+qmel-qmnum(12位)
返回:IHPA_TAB (合作伙伴列表)
然后调用 PM_Partner_read 获得 diadrc_wa
参数:parvw = ihpa_tab-pa
Parnr = ihpa_itab-parnr
Objnr = ihpa_itab-objnr
1. 合作伙伴功能 | 1. 名称 | 1. Table | 1. Field1 | 1. Field2 | 1. 备注 |
1. AB | 2. 负责部门 3. | 2. HRP1000 | 2. Objid | 2. Stext | 2. |
1. VW | 4. 负责人 5. | 3. | 3. | 3. | 3. |
1. AU | 6. 创始人 | 4. | 4. | 4. | 4. |
1. HR | 7. 制造厂商 | 5. LFA1 | 5. Lifnr | 5. Name1 | 5. |
1. AG | 8. 售达方 | 6. KNA1 | 6. Kunnr | 6. Name1 | 6. 界面中显示SP |
1. VU | 9. 负责的用户 | 7. | 7. | 7. | 7. |
1. LF | 10. 供应商 | 8. LFA1 | 8. Lifnr | 8. Name1 | 8. 界面中显示VN |
1. KU | 11. 协调者 | 9. | 9. | 9. | 9. |
1. CP | 12. 联系人 | 10. | 10. | 10. | 10. |
2. | 13. | 11. | 11. | 11. | 11. |
代码实例:
*合作伙伴
TYPES: BEGIN OF ty_parter,
vtext TYPE tpart-vtext, " 功能
parnr TYPE ihpa-parnr, "(合作伙伴)
name1 TYPE diadrcpd-name1, " 名称
addr(200) TYPE c, " 地址
city1 TYPE diadrcpd-city1 , "城市
tel_number TYPE diadrcpd-tel_number , "电话号码
fax_number TYPE diadrcpd-fax_number , "传真
sort1 TYPE diadrcpd-sort1, "排序
END OF
DATA: gt_parter TYPE TABLE OF ty_parter,
gs_parter TYPE ty_parter.
FORM get_parter USING v_qmnum.
DATA: it_part_h TYPE TABLE OF ihpavb WITH HEADER LINE.
DATA: wa_d LIKE diadr.
DATA: v_text TYPE tpart-vtext.
DATA l_objnr TYPE onr00-objnr.
DATA l_qmnum(12) TYPE c.
DATA tabix TYPE sy-tabix.
CLEAR: it_part_h,wa_d,gt_parter,gs_parter.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_qmnum
IMPORTING
output = l_qmnum.
CONCATENATE 'QM' l_qmnum INTO l_objnr.
READ TABLE gt_main INTO gs_main WITH KEY qmnum = v_qmnum.
tabix = sy-tabix.
* 读取合作伙伴列表
CALL FUNCTION 'PM_PARTNER_GET'
EXPORTING
objnr = l_objnr
TABLES
ihpa_tab = it_part_h.
IF sy-subrc = 0.
LOOP AT it_part_h.
* 读取合作伙伴细节
CALL FUNCTION 'PM_PARTNER_READ'
EXPORTING
parvw = it_part_h-parvw
parnr = it_part_h-parnr
objnr = it_part_h-objnr
IMPORTING
diadr_wa = wa_d
vtext = v_text.
IF sy-subrc = 0.
gs_parter-parnr = it_part_h-parnr.
gs_parter-name1 = wa_d-name1.
gs_parter-city1 = wa_d-city1.
gs_parter-tel_number = wa_d-tel_number.
gs_parter-fax_number = wa_d-fax_number.
gs_parter-sort1 = wa_d-sort1.
gs_parter-vtext = v_text.
CONCATENATE wa_d-name1 ',' wa_d-city1 ','
wa_d-tel_number ','
wa_d-fax_number ','
wa_d-sort1
INTO gs_parter-addr.
APPEND gs_parter TO gt_parter.
* 把负责人 和 协调者 放到主表中
IF it_part_h-parvw = 'VW' AND gs_main-fzr IS INITIAL.
gs_main-fzr = wa_d-name1.
MODIFY gt_main FROM gs_main INDEX tabix.
ENDIF.
IF it_part_h-parvw = 'KU' AND gs_main-xtz IS INITIAL.
gs_main-xtz = wa_d-name1.
MODIFY gt_main FROM gs_main INDEX tabix.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
当让对于其它对象的长文本和合作伙伴,也可以用类似的方法读取
标签:gs,wa,text,合作伙伴,qmnum,parter,通知单,文本,TYPE From: https://blog.51cto.com/u_8215601/7508689