2006 Jul 26 2:03 AM
How can i find OBJECT and other parameters?
2006 Jul 26 2:12 AM
Hi,
If you know the object name you can check for the name in the table THEAD . I am not very clear with your quoestion . Can you be more precise ?
Regards,
Varun .
2006 Jul 26 2:28 AM
a good way to find this out is to set a break-point in read_text and then use a transaction which uses the fm to read text. For example ME23n or va03 OR VL03N.
2006 Jul 26 2:30 AM
You can see all of the text objects and ids in transation SE75. If you don't know what the object/id is for your text, here is a tip. Create your text via the normal transaction, then go to se16, for table STXH, enter your user name for "Created By" and today's date for "Created on" and execute, the text header which you just created should be selected. Now you can see the object, the id, and how the NAME field is built. This is usually the business object, like material number, or sales document number, or a concatenation of more than one value, like maybe material number and plant.
Regards,
Rich Heilman
2006 Jul 26 3:34 AM
Hi,
Here is an example. Suppose I need to get the long text from transaction FB03(Display Document) so I enter the document number and the company code and then I click on the 'FIRST ITEM' button. Now I click on the 'LONG TEXT' button and I click on its editor. Now to see what parameters are needed go to 'GOTO' then click 'HEADER'. Now you can see the needed parameters under the field 'text name'. For example, mine is GLOB15000000982001001. So that will be company code(bukrs), accounting document number(belnr), fiscal year(gjahr) and line item(buzei). So that is the needed parameters to get the long text. Below is an actual example on how to use a long text:
REPORT zfr_aging_of_deposits
NO STANDARD PAGE HEADING
LINE-SIZE 0
LINE-COUNT 0
MESSAGE-ID zz.
TYPE-POOLS: slis.
----
Data dictionary tables *
----
TABLES: bsik,
bkpf,
lfa1,
t001.
----
Structures *
----
TYPES: BEGIN OF t_final,
bukrs TYPE bsik-bukrs, "Company Code
lifnr TYPE bsik-lifnr, "Account number of vendor or creditor
hkont TYPE bsik-hkont, "General ledger account
belnr TYPE bsik-belnr, "Accounting document number
gjahr TYPE bsik-gjahr, "Fiscal year
shkzg TYPE bsik-shkzg, "Debit/credit indicator
dmbtr TYPE bsik-dmbtr, "Amount in local currency
sgtxt TYPE bsik-sgtxt, "Item Text
buzei TYPE bsik-buzei, "Number of Line Item
budat TYPE bkpf-budat, "Posting date in the document
bldat TYPE bkpf-bldat, "Document date in document
xblnr TYPE bkpf-xblnr, "Reference document number
bktxt TYPE bkpf-bktxt, "Document header text
name1 TYPE lfa1-name1, "Vendor name
s_dat(10) TYPE c, "Start date(from long text)
e_dat(10) TYPE c, "End date(from long text)
amount1 TYPE bsik-dmbtr, "If 30 days and below
amount2 TYPE bsik-dmbtr, "If > 30 and < 60 days
amount3 TYPE bsik-dmbtr, "If > 60 and < 90 days
amount4 TYPE bsik-dmbtr, "If > 90 and < 120 days
amount5 TYPE bsik-dmbtr, "If > 120 and < 180 days
amount6 TYPE bsik-dmbtr, "If > 180 days
END OF t_final.
----
Internal tables *
----
DATA: it_final TYPE STANDARD TABLE OF t_final,
it_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE,
it_thead TYPE STANDARD TABLE OF thead WITH HEADER LINE.
----
Data declarations *
----
*ALV Declarations
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
g_repid LIKE sy-repid,
gs_layout TYPE slis_layout_alv,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event WITH HEADER LINE,
gt_print TYPE slis_print_alv.
CONSTANTS: gc_top TYPE slis_formname VALUE 'TOP_OF_PAGE',
gc_topsum TYPE slis_formname VALUE 'TOP_OF_LIST'.
----
Initialization *
----
INITIALIZATION.
g_repid = sy-repid.
----
Selection screen *
----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs(4) TYPE c OBLIGATORY,
p_budat TYPE bsik-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*at selection-screen on p_bukrs
AT SELECTION-SCREEN ON p_bukrs.
IF p_bukrs <> 'GLOB' AND
p_bukrs <> 'INOV' AND
p_bukrs <> 'GXCH'.
MESSAGE e008 WITH 'Invalid Company Code!'.
ENDIF.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bukrs
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bukrs.
TYPES: BEGIN OF t_search_help,
bukrs LIKE t001-bukrs,
butxt LIKE t001-butxt,
END OF t_search_help.
DATA: it_search_help TYPE STANDARD TABLE OF t_search_help
WITH HEADER LINE.
get only the valid company code from T001
SELECT bukrs butxt FROM t001
INTO TABLE it_search_help
WHERE bukrs IN ('GLOB', 'GXCH', 'INOV').
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'BUKRS'
PVALKEY = ' '
dynpprog = g_repid
dynpnr = sy-dynnr
dynprofield = 'P_BUKRS'
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
value_org = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
TABLES
value_tab = it_search_help
FIELD_TAB =
RETURN_TAB =
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
----
Start of selection *
----
START-OF-SELECTION.
PERFORM get_data.
CHECK NOT it_final[] IS INITIAL.
PERFORM combine_data.
----
End of selection *
----
END-OF-SELECTION.
IF it_final[] IS INITIAL.
MESSAGE i010.
ELSE.
PERFORM display_results.
ENDIF.
----
FORM get_data *
----
........ *
----
FORM get_data.
DATA: lv_hkont TYPE bsik-hkont VALUE '190100'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = '190100'
IMPORTING
output = lv_hkont.
get records from BSIK
SELECT bukrs lifnr hkont belnr gjahr shkzg dmbtr sgtxt buzei
FROM bsik
INTO TABLE it_final
WHERE bukrs = p_bukrs
AND budat < p_budat
AND hkont = lv_hkont.
ENDFORM.
----
FORM combine_data *
----
........ *
----
FORM combine_data.
DATA: lv_age_of_rec TYPE p.
FIELD-SYMBOLS: <fs_final> LIKE LINE OF it_final.
LOOP AT it_final ASSIGNING <fs_final>.
get records from BKPF
SELECT SINGLE bukrs belnr gjahr budat bldat xblnr bktxt FROM bkpf
INTO (bkpf-bukrs, bkpf-belnr, bkpf-gjahr, <fs_final>-budat,
<fs_final>-bldat, <fs_final>-xblnr, <fs_final>-bktxt)
WHERE bukrs = <fs_final>-bukrs
AND belnr = <fs_final>-belnr
AND gjahr = <fs_final>-gjahr.
if <fs_final>-shkzg = 'H', multiply dmbtr(amount in local currency)
by negative 1
IF <fs_final>-shkzg = 'H'.
<fs_final>-dmbtr = <fs_final>-dmbtr * -1.
ENDIF.
combine company code(bukrs), accounting document number(belnr),
fiscal year(gjahr) and line item(buzei) to get long text.
CONCATENATE: <fs_final>-bukrs <fs_final>-belnr
<fs_final>-gjahr <fs_final>-buzei
INTO it_thead-tdname.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = '0001'
language = sy-langu
name = it_thead-tdname
object = 'DOC_ITEM'
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
lines = it_lines
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.
if successful, split long text into start and end date
IF sy-subrc = 0.
READ TABLE it_lines TRANSPORTING tdline.
IF sy-subrc = 0.
SPLIT it_lines-tdline AT '-' INTO
<fs_final>-s_dat <fs_final>-e_dat.
ENDIF.
ENDIF.
get vendor name from LFA1
SELECT SINGLE name1 FROM lfa1
INTO <fs_final>-name1
WHERE lifnr = <fs_final>-lifnr.
lv_age_of_rec = p_budat - <fs_final>-budat.
condition for age of deposits
IF lv_age_of_rec <= 30.
<fs_final>-amount1 = <fs_final>-dmbtr.
ELSEIF lv_age_of_rec > 30 AND lv_age_of_rec <= 60.
<fs_final>-amount2 = <fs_final>-dmbtr.
ELSEIF lv_age_of_rec > 60 AND lv_age_of_rec <= 90.
<fs_final>-amount3 = <fs_final>-dmbtr.
ELSEIF lv_age_of_rec > 90 AND lv_age_of_rec <= 120.
<fs_final>-amount4 = <fs_final>-dmbtr.
ELSEIF lv_age_of_rec > 120 AND lv_age_of_rec <= 180.
<fs_final>-amount5 = <fs_final>-dmbtr.
ELSEIF lv_age_of_rec > 180.
<fs_final>-amount6 = <fs_final>-dmbtr.
ENDIF.
CLEAR: bkpf, it_lines-tdline, lv_age_of_rec.
ENDLOOP.
ENDFORM.
----
FORM display_results *
----
........ *
----
FORM display_results.
SORT it_final BY lifnr budat bldat.
PERFORM f_build_layout USING gs_layout.
PERFORM f_init_fieldcat USING gt_fieldcat[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_save = 'X'
TABLES
t_outtab = it_final[]
EXCEPTIONS
program_error = 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.
ENDFORM. " DISPLAY_ALV
----
FORM top_of_page *
----
........ *
----
FORM top_of_page.
*ALV header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
lv_header TYPE string,
lv_date(10),
lv_time(10),
lv_user TYPE sy-uname,
lv_time_n_date(30).
SELECT SINGLE butxt FROM t001
INTO t001-butxt
WHERE bukrs = p_bukrs.
*Company code
CLEAR lv_header.
CONCATENATE: 'Company:' t001-butxt INTO lv_header
SEPARATED BY space.
wa_header-typ = 'H'.
wa_header-info = lv_header.
APPEND wa_header TO t_header.
CLEAR wa_header.
*Title of the report
CLEAR lv_header.
CONCATENATE: 'Report Title:' sy-title INTO lv_header
SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = lv_header.
APPEND wa_header TO t_header.
CLEAR wa_header.
*Date and time
WRITE: sy-datum TO lv_date MM/DD/YYYY,
sy-uzeit TO lv_time USING EDIT MASK '__:__:__'.
CONCATENATE: 'Generated on:' lv_date lv_time
INTO lv_time_n_date SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = lv_time_n_date.
APPEND wa_header TO t_header.
CLEAR wa_header.
*Generated by
CLEAR lv_header.
MOVE sy-uname TO lv_user.
CONCATENATE: 'Generated by:' lv_user INTO lv_header
SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = lv_header.
APPEND wa_header TO t_header.
CLEAR wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. " TOP_OF_PAGE
----
FORM f_build_layout *
----
........ *
----
--> %LAYOUT *
----
FORM f_build_layout USING %layout TYPE slis_layout_alv.
%layout-zebra = 'X'.
%layout-colwidth_optimize = 'X'.
ENDFORM. " F_BUILD_LAYOUT
----
FORM f_init_fieldcat *
----
........ *
----
--> %FIELDCAT *
----
FORM f_init_fieldcat USING %fieldcat TYPE slis_t_fieldcat_alv.
DATA: lc_fieldcat TYPE slis_fieldcat_alv.
CLEAR lc_fieldcat.
DEFINE m_field.
add 1 to lc_fieldcat-col_pos.
lc_fieldcat-fieldname = &1.
lc_fieldcat-outputlen = &2.
lc_fieldcat-seltext_l = &3.
lc_fieldcat-do_sum = &4.
lc_fieldcat-inttype = &5.
lc_fieldcat-hotspot = &6.
lc_fieldcat-fix_column = &7.
lc_fieldcat-ddictxt = 'L'.
lc_fieldcat-no_zero = 'X'.
append lc_fieldcat to %fieldcat.
END-OF-DEFINITION.
m_field 'BELNR' '10' 'Doc No.' '' '' '' 'X'.
m_field 'GJAHR' '4' 'Fiscal Year' '' '' '' 'X'.
m_field 'BLDAT' '8' 'Doc date' '' '' '' 'X'.
m_field 'BUDAT' '8' 'Posting Date' '' '' '' 'X'.
m_field 'LIFNR' '10' 'Vendor Code' '' '' '' 'X'.
m_field 'NAME1' '35' 'Vendor Name' '' '' '' 'X'.
m_field 'XBLNR' '16' 'Reference' '' '' '' ''.
m_field 'BKTXT' '25' 'Header Text' '' '' '' ''.
m_field 'SGTXT' '50' 'Line Item Text' '' '' '' ''.
m_field 'S_DAT' '10' 'Start Date' '' '' '' ''.
m_field 'E_DAT' '10' 'End Date' '' '' '' ''.
m_field 'DMBTR' '13' 'Amount in PHP' 'X' '' '' ''.
m_field 'AMOUNT1' '13' '30 days and below' 'X' '' '' ''.
m_field 'AMOUNT2' '13' 'If > 30 but <= 60 days' 'X' '' '' ''.
m_field 'AMOUNT3' '13' 'If > 60 but <= 90 days' 'X' '' '' ''.
m_field 'AMOUNT4' '13' 'If > 90 but <= 120 days' 'X' '' '' ''.
m_field 'AMOUNT5' '13' 'If > 120 but <= 180 days' 'X' '' '' ''.
m_field 'AMOUNT6' '13' 'Over 180 days' 'X' '' '' ''.
ENDFORM. " f_init_fieldcat
Hope this helps...
P.S. Please award points for useful answers.
2006 Jul 26 3:50 AM
2006 Jul 26 3:59 AM
Hi Amao,
I belived I have done the read_text in the past. I think you need to concatenate its VBELN AND POSNR. You can also go to 'GOTO', 'HEADER' and then 'TEXT'. Check out the code below:
LOOP AT order_details.
CONCATENATE order_details-vbeln order_details-posnr
INTO ls_thead-tdname.
*Function to read text related to item.
REFRESH : lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0002'
language = sy-langu
name = ls_thead-tdname
object = 'VBBP'
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4.
IF sy-subrc = 0.
READ TABLE lt_lines INDEX 2 TRANSPORTING tdline.
IF sy-subrc = 0.
order_details-ls_lines2 = lt_lines-tdline.
ENDIF.
READ TABLE lt_lines INDEX 3 TRANSPORTING tdline.
IF sy-subrc = 0.
order_details-ls_lines3 = lt_lines-tdline.
ENDIF.
READ TABLE lt_lines INDEX 4 TRANSPORTING tdline.
IF sy-subrc = 0.
order_details-ls_lines4 = lt_lines-tdline.
ENDIF.
ELSE.
SELECT SINGLE kunnr INTO vbpa-kunnr FROM vbpa
WHERE vbeln = order_details-vbeln AND
posnr = order_details-posnr AND
parvw = 'WE'.
IF sy-subrc = 0.
READ TABLE it_vbpa INDEX 1.
SELECT SINGLE name1 telf1 stras
INTO (kna1-name1,kna1-telf1,kna1-stras)
FROM kna1
WHERE kunnr = vbpa-kunnr.
MOVE: kna1-stras TO order_details-ls_lines2,
kna1-name1 TO order_details-ls_lines3,
kna1-telf1 TO order_details-ls_lines4.
ELSE.
MOVE: zstras TO order_details-ls_lines2,
zname1 TO order_details-ls_lines3,
ztelf1 TO order_details-ls_lines4.
ENDIF.
ENDIF.
MODIFY order_details.
ENDLOOP.
Hope this helps...
P.S. Please award points for useful answers.
2006 Jul 26 4:01 AM
vl03n
1. input dlv no
2. click menu "goto" -> header -> text
3. click button "call log" at bottom, the button looks like a paper
2006 Jul 26 4:10 AM
yes,but i can only find:
OBJECT 'VBBK'
'KNVV'
'KNA1'
How to find others? if it isn't exist, what OBJECT shoud i choose?
2006 Jul 26 4:14 AM
SET A BREAK-POINT IN READ_TEXT. GOTO VL03N. CLICK ON THE MAGNIFYING GLASS THEN GOTO TEXTS. THE BREAKP-PINT SHOULD POPUP AND YOU WILL SEE WHAT 'OBJECT' IS.
2006 Jul 26 4:14 AM
My program:
<i>FUNCTION ZOPC_CRM_SO_ALTERATION.
*"----
""Local interface:
*" IMPORTING
*" VALUE(I_DATE_BEGIN) LIKE JCDS-UDATE
*" VALUE(I_DATE_END) LIKE JCDS-UDATE
*" TABLES
*" T_ORDER_HEADER STRUCTURE ZOPC_SO_ORDER_HEADER OPTIONAL
*" T_ORDER_ITEM STRUCTURE ZOPC_SO_ORDER_ITEM OPTIONAL
*" T_DELIVERY STRUCTURE ZOPC_SO_DELIVERY OPTIONAL
*"----
RANGES: r_date FOR jcds-udate.
r_date-sign = 'I'.
r_date-option = 'BT'.
r_date-low = i_date_begin.
r_date-high = i_date_end.
APPEND r_date.
DATA: lv_kwmeng LIKE ekpo-menge,
lv_lfimg LIKE ekpo-menge,
lv_name LIKE thead-tdname,
lv_lines LIKE sy-tabix,
t_tline LIKE tline OCCURS 0 WITH HEADER LINE,
it_jcds LIKE jcds OCCURS 0.
DATA: BEGIN OF it_vbak_vbap OCCURS 0,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
vtweg LIKE vbak-vtweg,
augru LIKE vbak-augru,
audat LIKE vbak-audat,
kunnr LIKE vbak-kunnr,
waerk LIKE vbak-waerk,
netwr LIKE vbak-netwr,
vkorg LIKE vbak-vkorg,
spart LIKE vbak-spart,
vkgrp LIKE vbak-vkgrp,
vkbur LIKE vbak-vkbur,
knumv LIKE vbak-knumv,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
abgru LIKE vbap-abgru,
matnr LIKE vbap-matnr,
arktx LIKE vbap-arktx,
kwmeng LIKE ekpo-menge,
vrkme LIKE vbap-vrkme,
etdat LIKE vbap-etdat,
kondm LIKE vbap-kondm,
charg LIKE vbap-charg,
END OF it_vbak_vbap.
DATA: BEGIN OF it_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kbetr LIKE konv-kbetr,
waers LIKE konv-waers,
kkurs LIKE konv-kkurs,
END OF it_konv.
DATA: BEGIN OF it_zstate OCCURS 0,
vbeln LIKE zstate-vbeln,
state LIKE zstate-state,
END OF it_zstate.
DATA: BEGIN OF it_vbkd OCCURS 0,
vbeln LIKE vbkd-vbeln,
posnr LIKE vbkd-posnr,
zterm LIKE vbkd-zterm,
inco1 LIKE vbkd-inco1,
inco2 LIKE vbkd-inco2,
END OF it_vbkd.
DATA: BEGIN OF it_vbpa OCCURS 0,
vbeln LIKE vbpa-vbeln,
parvw LIKE vbpa-parvw,
kunnr LIKE vbpa-kunnr,
END OF it_vbpa.
DATA: BEGIN OF it_knkk OCCURS 0,
kunnr LIKE knkk-kunnr,
kkber LIKE knkk-kkber,
klimk LIKE knkk-klimk,
END OF it_knkk.
DATA: BEGIN OF it_vbfa OCCURS 0,
vbelv LIKE vbfa-vbelv,
posnv LIKE vbfa-posnv,
vbeln LIKE vbfa-vbeln,
posnn LIKE vbfa-posnn,
END OF it_vbfa.
DATA: BEGIN OF it_likp_lips OCCURS 0,
vbeln LIKE likp-vbeln,
wadat LIKE likp-wadat,
wadat_ist LIKE likp-wadat_ist,
posnr LIKE lips-posnr,
matnr LIKE lips-matnr,
lfimg LIKE ekpo-menge,
charg LIKE lips-charg,
vrkme LIKE lips-vrkme,
werks LIKE lips-werks,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
END OF it_likp_lips.
DATA: BEGIN OF it_lips_collect OCCURS 0,
lfimg LIKE lips-lfimg,
vrkme LIKE lips-vrkme,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
END OF it_lips_collect.
DATA: BEGIN OF it_zlips OCCURS 0,
vbeln LIKE zlips-vbeln,
posnr LIKE zlips-posnr,
lfimg LIKE zlips-lfimg,
vrkme LIKE zlips-vrkme,
END OF it_zlips.
DATA: BEGIN OF it_makt OCCURS 0,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF it_makt.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_jcds
FROM jcds AS a
WHERE a~udate IN r_date
and ( STAT <> 'E0001' OR STAT NOT LIKE 'I%' ).
取订单信息
SELECT a~vbeln
a~auart
a~vtweg
a~augru
a~audat
a~kunnr
a~waerk
a~netwr
a~vkorg
a~spart
a~vkgrp
a~vkbur
a~knumv
b~posnr
b~werks
b~abgru
b~matnr
b~arktx
b~kwmeng
b~vrkme
b~etdat
b~kondm
b~charg
INTO CORRESPONDING FIELDS OF TABLE it_vbak_vbap
FROM vbak AS a INNER JOIN vbap AS b
ON avbeln = bvbeln
FOR ALL ENTRIES IN it_jcds
WHERE a~objnr = it_jcds-objnr.
CHECK NOT it_vbak_vbap[] IS INITIAL.
单价和牌价
SELECT a~knumv
a~kposn
a~kschl
a~kbetr
a~waers
a~kkurs
INTO CORRESPONDING FIELDS OF TABLE it_konv
FROM konv AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~knumv = it_vbak_vbap-knumv
AND a~kposn = it_vbak_vbap-posnr
AND a~kschl IN ('PR00','PR01').
签核状态
SELECT a~vbeln
a~state
INTO CORRESPONDING FIELDS OF TABLE it_zstate
FROM zstate AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~vbeln = it_vbak_vbap-vbeln.
销售凭证业务数据
SELECT a~vbeln
a~posnr
a~zterm
a~inco1
a~inco2
INTO CORRESPONDING FIELDS OF TABLE it_vbkd
FROM vbkd AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~vbeln = it_vbak_vbap-vbeln
AND a~posnr = it_vbak_vbap-posnr.
合作伙伴数据
SELECT a~vbeln
a~parvw
a~kunnr
INTO CORRESPONDING FIELDS OF TABLE it_vbpa
FROM vbpa AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~vbeln = it_vbak_vbap-vbeln
AND a~posnr = it_vbak_vbap-posnr
AND a~parvw IN ('AG','Z2','Z3').
客户信用额度
SELECT a~kunnr
a~kkber
a~klimk
INTO CORRESPONDING FIELDS OF TABLE it_knkk
FROM knkk AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~kunnr = it_vbak_vbap-kunnr.
销售凭证流
SELECT a~vbelv
a~posnv
a~vbeln
a~posnn
INTO CORRESPONDING FIELDS OF TABLE it_vbfa
FROM vbfa AS a
FOR ALL ENTRIES IN it_vbak_vbap
WHERE a~vbelv = it_vbak_vbap-vbeln
AND a~posnv = it_vbak_vbap-posnr
AND A~vbtyp_n EQ 'J'.
取发货信息
SELECT a~vbeln
a~wadat
a~wadat_ist
b~posnr
b~matnr
b~lfimg
b~charg
b~vrkme
b~werks
b~vgbel
b~vgpos
INTO CORRESPONDING FIELDS OF TABLE it_likp_lips
FROM likp AS a INNER JOIN lips AS b
ON avbeln = bvbeln
FOR ALL ENTRIES IN it_vbfa
WHERE a~vbeln = it_vbfa-vbeln
AND b~posnr = it_vbfa-posnn.
取预发数量(ZLIPS-LFIMG)
SELECT a~vbeln
a~posnr
a~lfimg
a~vrkme
INTO CORRESPONDING FIELDS OF TABLE it_zlips
FROM zlips AS a
FOR ALL ENTRIES IN it_likp_lips
WHERE a~vbeln = it_likp_lips-vbeln
AND a~posnr = it_likp_lips-posnr.
取物料描述
SELECT a~matnr
a~maktx
INTO CORRESPONDING FIELDS OF TABLE it_makt
FROM makt AS a
FOR ALL ENTRIES IN it_likp_lips
WHERE a~matnr = it_likp_lips-matnr.
LOOP AT it_likp_lips.
发货明细表
t_delivery-vbeln = it_likp_lips-vbeln.
t_delivery-posnr = it_likp_lips-posnr.
t_delivery-matnr = it_likp_lips-matnr.
t_delivery-wadat = it_likp_lips-wadat.
t_delivery-wadat_ist = it_likp_lips-wadat_ist.
t_delivery-lfimg2 = it_likp_lips-lfimg.
t_delivery-charg = it_likp_lips-charg.
t_delivery-vrkme2 = it_likp_lips-vrkme.
t_delivery-werks = it_likp_lips-werks.
t_delivery-vgbel = it_likp_lips-vgbel.
t_delivery-vgpos = it_likp_lips-vgpos.
READ TABLE it_makt WITH KEY matnr = it_likp_lips-matnr.
IF sy-subrc EQ 0.
t_delivery-maktx = it_makt-maktx.
ENDIF.
READ TABLE it_zlips WITH KEY vbeln = it_likp_lips-vbeln
posnr = it_likp_lips-posnr.
IF sy-subrc EQ 0.
t_delivery-lfimg1 = it_zlips-lfimg.
t_delivery-vrkme1 = it_zlips-vrkme.
ENDIF.
CONCATENATE t_delivery-vbeln t_delivery-posnr INTO lv_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = SY-MANDT
id = '0001'
language = '1'
name = lv_name
object = 'VBBK'
TABLES
lines = t_tline
EXCEPTIONS
not_found = 4.
DESCRIBE TABLE t_tline LINES lv_lines.
IF lv_lines > 0.
READ TABLE t_tline INDEX 1.
t_delivery-text1 = t_tline-tdline.
ENDIF.
CLEAR t_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = SY-MANDT
id = 'Z001'
language = '1'
name = lv_name
object = 'VBBK'
TABLES
lines = t_tline
EXCEPTIONS
not_found = 4.
DESCRIBE TABLE t_tline LINES lv_lines.
IF lv_lines > 0.
READ TABLE t_tline INDEX 1.
t_delivery-text2 = t_tline-tdline.
ENDIF.
CLEAR t_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = SY-MANDT
id = 'Z002'
language = '1'
name = lv_name
object = 'VBBK'
TABLES
lines = t_tline
EXCEPTIONS
not_found = 4.
DESCRIBE TABLE t_tline LINES lv_lines.
IF lv_lines > 0.
READ TABLE t_tline INDEX 1.
t_delivery-text3 = t_tline-tdline.
ENDIF.
CLEAR t_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = SY-MANDT
id = 'Z003'
language = '1'
name = lv_name
object = 'VBBK'
TABLES
lines = t_tline
EXCEPTIONS
not_found = 4.
DESCRIBE TABLE t_tline LINES lv_lines.
IF lv_lines > 0.
READ TABLE t_tline INDEX 1.
t_delivery-text4 = t_tline-tdline.
ENDIF.
CLEAR t_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = SY-MANDT
id = 'Z004'
language = '1'
name = lv_name
object = 'VBBK'
TABLES
lines = t_tline
EXCEPTIONS
not_found = 4.
DESCRIBE TABLE t_tline LINES lv_lines.
IF lv_lines > 0.
READ TABLE t_tline INDEX 1.
t_delivery-text5 = t_tline-tdline.
ENDIF.
CLEAR t_tline.
发货汇总
it_lips_collect-vgbel = it_likp_lips-vgbel.
it_lips_collect-vgpos = it_likp_lips-vgpos.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
exporting
i_matnr = it_likp_lips-matnr
i_in_me = it_likp_lips-vrkme
i_out_me = 'KG'
i_menge = it_likp_lips-lfimg
importing
e_menge = lv_lfimg.
it_lips_collect-lfimg = lv_lfimg / 1000.
it_lips_collect-vrkme = 'TO'.
COLLECT: t_delivery, it_lips_collect.
CLEAR: t_delivery, it_lips_collect, lv_lfimg.
ENDLOOP.
LOOP AT it_vbak_vbap.
填充订单抬头表
t_order_header-vbeln = it_vbak_vbap-vbeln.
t_order_header-auart = it_vbak_vbap-auart.
t_order_header-vtweg = it_vbak_vbap-vtweg.
t_order_header-augru = it_vbak_vbap-augru.
t_order_header-audat = it_vbak_vbap-audat.
t_order_header-kunnr = it_vbak_vbap-kunnr.
t_order_header-waerk = it_vbak_vbap-waerk.
t_order_header-netwr = it_vbak_vbap-netwr.
t_order_header-vkorg = it_vbak_vbap-vkorg.
t_order_header-spart = it_vbak_vbap-spart.
t_order_header-vkgrp = it_vbak_vbap-vkgrp.
t_order_header-vkbur = it_vbak_vbap-vkbur.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
exporting
i_matnr = it_vbak_vbap-matnr
i_in_me = it_vbak_vbap-vrkme
i_out_me = 'KG'
i_menge = it_vbak_vbap-kwmeng
importing
e_menge = lv_kwmeng.
t_order_header-kwmeng = lv_kwmeng / 1000.
t_order_header-vrkme = 'TO'.
READ TABLE it_zstate WITH KEY vbeln = it_vbak_vbap-vbeln.
IF sy-subrc EQ 0.
t_order_header-state = it_zstate-state.
ENDIF.
READ TABLE it_vbkd WITH KEY vbeln = it_vbak_vbap-vbeln
posnr = it_vbak_vbap-posnr.
IF sy-subrc EQ 0.
t_order_header-zterm = it_vbkd-zterm.
t_order_header-inco1 = it_vbkd-inco1.
t_order_header-inco2 = it_vbkd-inco2.
ENDIF.
READ TABLE it_vbpa WITH KEY vbeln = it_vbak_vbap-vbeln
parvw = 'AG'.
IF sy-subrc EQ 0.
t_order_header-kunag = it_vbpa-kunnr.
ENDIF.
READ TABLE it_vbpa WITH KEY vbeln = it_vbak_vbap-vbeln
parvw = 'Z2'.
IF sy-subrc EQ 0.
t_order_header-kunz2 = it_vbpa-kunnr.
ENDIF.
READ TABLE it_vbpa WITH KEY vbeln = it_vbak_vbap-vbeln
parvw = 'Z3'.
IF sy-subrc EQ 0.
t_order_header-kunz3 = it_vbpa-kunnr.
ENDIF.
READ TABLE it_knkk WITH KEY kunnr = it_vbak_vbap-kunnr.
IF sy-subrc EQ 0.
t_order_header-klimk = it_knkk-klimk.
ENDIF.
填充订单项目表
t_order_item-vbeln = it_vbak_vbap-vbeln.
t_order_item-posnr = it_vbak_vbap-posnr.
t_order_item-werks = it_vbak_vbap-werks.
t_order_item-abgru = it_vbak_vbap-abgru.
t_order_item-arktx = it_vbak_vbap-arktx.
t_order_item-matnr = it_vbak_vbap-matnr.
t_order_item-kwmeng = it_vbak_vbap-kwmeng.
t_order_item-vrkme1 = it_vbak_vbap-vrkme.
t_order_item-kondm = it_vbak_vbap-kondm.
t_order_item-charg = it_vbak_vbap-charg.
READ TABLE it_konv WITH KEY knumv = it_vbak_vbap-knumv
kposn = it_vbak_vbap-posnr
kschl = 'PR00'.
IF sy-subrc EQ 0.
t_order_item-kbetr1 = it_konv-kbetr.
t_order_item-waers1 = it_konv-waers.
ENDIF.
READ TABLE it_konv WITH KEY knumv = it_vbak_vbap-knumv
kposn = it_vbak_vbap-posnr
kschl = 'PR01'.
IF sy-subrc EQ 0.
t_order_item-kbetr2 = it_konv-kbetr.
t_order_item-waers2 = it_konv-waers.
ENDIF.
READ TABLE it_lips_collect WITH KEY vgbel = it_vbak_vbap-vbeln
vgpos = it_vbak_vbap-posnr.
IF sy-subrc EQ 0.
t_order_item-lfimg = it_lips_collect-lfimg.
t_order_item-vrkme2 = it_lips_collect-vrkme.
ENDIF.
COLLECT: t_order_header, t_order_item.
CLEAR: t_order_header, t_order_item, lv_kwmeng.
ENDLOOP.
SORT: t_order_header, t_order_item, t_delivery.
ENDFUNCTION.</i>
2006 Jul 26 6:03 AM