‎2008 Mar 29 6:18 AM
Hi,
What is the purpose of READ_TEXT functuion module and how to get text id value in this scenario(TDID)?
Thanks
‎2008 Mar 29 6:22 AM
Hi
It is used to fetch the Long Text details or
Header and Items texts of a application document
READ_TEXT
READ_TEXT provides a text for the application program in the specified work areas.
The function module reads the desired text from the text file, the text memory, or the archive. You must fully specify the text using OBJECT, NAME, ID, and LANGUAGE. An internal work area can hold only one text; therefore, generic specifications are not allowed with these options.
After successful reading, the system places header information and text lines into the work areas specified with HEADER and LINES.
If a reference text is used, SAPscript automatically processes the reference chain and provides the text lines found in the text at the end of the chain. If an error occurs, the system leaves the function module and triggers the exception REFERENCE_CHECK.
Function call:
CALL FUNCTION 'READ_TEXT'
EXPORTING CLIENT = SY-MANDT
OBJECT = ?...
NAME = ?...
ID = ?...
LANGUAGE = ?...
ARCHIVE_HANDLE = 0
IMPORTING HEADER =
TABLES LINES = ?...
EXCEPTIONS ID =
LANGUAGE =
NAME =
NOT_FOUND =
OBJECT =
REFERENCE_CHECK =
WRONG_ACCESS_TO_ARCHIVE =
Export parameters:
CLIENT
Specify the client under which the text is stored. If you omit this parameter, the system uses the current client as default.
Reference field: SY-MANDT
Default value: SY-MANDT
OBJECT
Enter the name of the text object to which the text is allocated. Table TTXOB contains the valid objects.
Reference field: THEAD-TDOBJECT
NAME
Enter the name of the text module. The name may be up to 70 characters long. Its internal structure depends on the text object used.
Reference field: THEAD-TDNAME
ID
Enter the text ID of the text module. Table TTXID contains the valid text IDs, depending on the text object.
Reference field: THEAD-TDID
LANGUAGE
Enter the language key of the text module. The system accepts only languages that are defined in table T002.
Reference field: THEAD-TDSPRAS
ARCHIVE_HANDLE
If you want to read the text from the archive, you must enter a handle here. The system uses it to access the archive. You can create the handle using the function module ACHIVE_OPEN_FOR_READ.
The value '0' indicates that you do not want to read the text from the archive.
Reference field: SY-TABIX
Default value: 0
Import parameters:
HEADER
If the system finds the desired text, it returns the text header in this parameter.
Structure: THEAD
Table parameters:
LINES
The table contains all text lines that belong to the text read.
Structure: TLINE
Exceptions:
ID
The text ID specified in the parameter ID does not exist in table TTXID. It must be defined there together with the object of the text module.
LANGUAGE
The parameter LANGUAGE contains a language key that does not exist in table T002.
NAME
The parameter NAME contains the name of a text module that does not correspond to the SAPscript conventions.
Possible errors:
The field contains only blanks.
The field contains the invalid characters * or ,.
OBJECT
The parameter OBJECT contains the name of a text object that does not exist in table TTXOB.
NOT_FOUND
The system did not find the specified text module.
REFERENCE_CHECK
The text module to be read has no text lines of its own but refers to the lines of another text module. This reference chain can include several levels. For the current text, the chain is interrupted, that is, one of the text modules referred to in the chain no longer exists.
WRONG_ACCESS_ TO_ARCHIVE
The exception WRONG_ACCESS_TO_ARCHIVE is triggered if an archive is accessed using an incorrect or non-existing archive handle or an incorrect mode (that is, read if the archive is open for writing or vice versa).
Regards
Kiran Sure
‎2008 Mar 29 6:22 AM
Hi
It is used to fetch the Long Text details or
Header and Items texts of a application document
READ_TEXT
READ_TEXT provides a text for the application program in the specified work areas.
The function module reads the desired text from the text file, the text memory, or the archive. You must fully specify the text using OBJECT, NAME, ID, and LANGUAGE. An internal work area can hold only one text; therefore, generic specifications are not allowed with these options.
After successful reading, the system places header information and text lines into the work areas specified with HEADER and LINES.
If a reference text is used, SAPscript automatically processes the reference chain and provides the text lines found in the text at the end of the chain. If an error occurs, the system leaves the function module and triggers the exception REFERENCE_CHECK.
Function call:
CALL FUNCTION 'READ_TEXT'
EXPORTING CLIENT = SY-MANDT
OBJECT = ?...
NAME = ?...
ID = ?...
LANGUAGE = ?...
ARCHIVE_HANDLE = 0
IMPORTING HEADER =
TABLES LINES = ?...
EXCEPTIONS ID =
LANGUAGE =
NAME =
NOT_FOUND =
OBJECT =
REFERENCE_CHECK =
WRONG_ACCESS_TO_ARCHIVE =
Export parameters:
CLIENT
Specify the client under which the text is stored. If you omit this parameter, the system uses the current client as default.
Reference field: SY-MANDT
Default value: SY-MANDT
OBJECT
Enter the name of the text object to which the text is allocated. Table TTXOB contains the valid objects.
Reference field: THEAD-TDOBJECT
NAME
Enter the name of the text module. The name may be up to 70 characters long. Its internal structure depends on the text object used.
Reference field: THEAD-TDNAME
ID
Enter the text ID of the text module. Table TTXID contains the valid text IDs, depending on the text object.
Reference field: THEAD-TDID
LANGUAGE
Enter the language key of the text module. The system accepts only languages that are defined in table T002.
Reference field: THEAD-TDSPRAS
ARCHIVE_HANDLE
If you want to read the text from the archive, you must enter a handle here. The system uses it to access the archive. You can create the handle using the function module ACHIVE_OPEN_FOR_READ.
The value '0' indicates that you do not want to read the text from the archive.
Reference field: SY-TABIX
Default value: 0
Import parameters:
HEADER
If the system finds the desired text, it returns the text header in this parameter.
Structure: THEAD
Table parameters:
LINES
The table contains all text lines that belong to the text read.
Structure: TLINE
Exceptions:
ID
The text ID specified in the parameter ID does not exist in table TTXID. It must be defined there together with the object of the text module.
LANGUAGE
The parameter LANGUAGE contains a language key that does not exist in table T002.
NAME
The parameter NAME contains the name of a text module that does not correspond to the SAPscript conventions.
Possible errors:
The field contains only blanks.
The field contains the invalid characters * or ,.
OBJECT
The parameter OBJECT contains the name of a text object that does not exist in table TTXOB.
NOT_FOUND
The system did not find the specified text module.
REFERENCE_CHECK
The text module to be read has no text lines of its own but refers to the lines of another text module. This reference chain can include several levels. For the current text, the chain is interrupted, that is, one of the text modules referred to in the chain no longer exists.
WRONG_ACCESS_ TO_ARCHIVE
The exception WRONG_ACCESS_TO_ARCHIVE is triggered if an archive is accessed using an incorrect or non-existing archive handle or an incorrect mode (that is, read if the archive is open for writing or vice versa).
Regards
Kiran Sure
‎2008 Mar 29 6:23 AM
Hi,
Read_text fm is used to get the texts stored.
for example, if you go to sales order, then goto-header texts, here all the text are maintianed and each corresponds to a TDID,
so to retrieve this text we will use read_text FM.
Regards,
sasi
‎2008 Mar 29 6:50 AM
Hi ,
READ_TEXT Function module is used to read the standard text mainted in the Standard tcode..
steps:
1. double click the on the text which is to be read
( when it is double clicked it goes to Display text screen)
2. in that in menu GOTO --> Header .
3. u will get the Text id, text name, text object and language
4. pass these values to READ_TEXT function module
it will read the text in an internal table.
if wrong correct me.
if useful please reward points.
regards
Kumar M
‎2008 Mar 29 7:10 AM
Hi Ashish,
Execute and Check this program. Your Query of purpose of READ_TEXT function module and text id value (TDID)
is solved.
REPORT ZPOTEST NO STANDARD PAGE HEADING
LINE-SIZE 80
MESSAGE-ID ME
LINE-COUNT 65(7).
TABLES : ESLH,ESLL, T001, J_1IMOCOMP , A003, KONP,J_1IMOVEND,
J_1ISSIRAT, LFM1, T685T ,KONV.
*Start : Selection screen
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : EBELN LIKE EKKO-EBELN.
SELECTION-SCREEN : END OF BLOCK B1.
*End : Selection screen
*Start : Data Declartion.
DATA : BEGIN OF ITAB OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
TXZ01 LIKE EKPO-TXZ01,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
BUKRS LIKE EKPO-BUKRS,
WERKS LIKE EKPO-WERKS,
MWSKZ LIKE EKPO-MWSKZ,
TXJCD LIKE EKPO-TXJCD,
MATKL LIKE EKPO-MATKL,
NETWR LIKE EKPO-NETWR,
MTART LIKE EKPO-MTART,
END OF ITAB.
DATA : BEGIN OF ITAB_PACK OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
PACKNO LIKE ESLL-PACKNO,
INTROW LIKE ESLL-INTROW,
EXTROW LIKE ESLL-EXTROW,
KTEXT1 LIKE ESLL-KTEXT1,
SRVPOS LIKE ESLL-SRVPOS,
MENGE LIKE ESLL-MENGE,
MEINS LIKE ESLL-MEINS,
TBTWR LIKE ESLL-TBTWR,
NETWR LIKE ESLL-NETWR,
CNT TYPE I,
END OF ITAB_PACK.
DATA : BEGIN OF ITAB_COND OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
KNUMV LIKE EKKO-KNUMV,
KSCHL LIKE KONV-KSCHL,
KBETR LIKE KONV-KBETR,
KWERT LIKE KONV-KWERT,
WAERS LIKE KONV-WAERS,
END OF ITAB_COND.
DATA : BEGIN OF ITAB_PRICE OCCURS 0,
KSCHL LIKE KONV-KSCHL,
VTEXT LIKE T685T-VTEXT,
UNIT(30),
KWERT LIKE KONV-KWERT,
END OF ITAB_PRICE.
DATA : IEKKO LIKE EKKO.
DATA : BEGIN OF TEXT OCCURS 0.
INCLUDE STRUCTURE TTXIT.
DATA : END OF TEXT.
DATA : BEGIN OF TLINE OCCURS 100.
INCLUDE STRUCTURE TLINE.
DATA : END OF TLINE.
DATA : BEGIN OF XKOMV OCCURS 0.
INCLUDE STRUCTURE KOMV.
DATA : END OF XKOMV.
DATA : BEGIN OF TAX OCCURS 0,
EBELP LIKE EKPO-EBELP,
MWSKZ LIKE EKPO-MWSKZ,
TXJCD LIKE EKPO-TXJCD,
VTEXT LIKE T685T-VTEXT,
KNUMH LIKE A003-KNUMH,
KBETR LIKE KONP-KBETR,
KSCHL LIKE A003-KSCHL,
END OF TAX .
DATA : BEGIN OF SERPACK OCCURS 0,
VTEXT LIKE T685T-VTEXT,
EBELP LIKE EKPO-EBELP,
KSCHL LIKE KONV-KSCHL,
KWERT LIKE KONV-KWERT,
KNUMV LIKE ESLH-KNUMV,
WTEMP LIKE KONV-KBETR,
END OF SERPACK.
DATA : BEGIN OF WTXT OCCURS 0,
TEXT(30),
END OF WTXT.
DATA : NAME LIKE THEAD-TDNAME,
LCNT TYPE I,TFLG .
DATA : EXRATE LIKE J_1IEXCTAX-RATE ,
EXAMT LIKE J_1IEXCTAX-AMOUNT,
NETAMT LIKE EXAMT.
DATA : HPRICE LIKE KOMK,
IPRICE LIKE KOMP.
RANGES : TXTOBJ FOR TTXIT-TDOBJECT,
KSCHL FOR KONV-KSCHL,
BSART FOR EKKO-BSART,
COND FOR KONV-KSCHL.
*End : Data Declaration
AT SELECTION-SCREEN.
PERFORM CHECK_PO.
START-OF-SELECTION.
PERFORM TEXT_OBJECT.
PERFORM COND_VALUE.
PERFORM DOC_TYPE.
END-OF-SELECTION.
PERFORM GET_ITEM.
PERFORM GET_PACK.
PERFORM GET_TEXT.
PERFORM DISPLAY_REPORT.
TOP-OF-PAGE.
IF TFLG NE 'N'.
PERFORM TOP_PAGE.
ENDIF.
END-OF-PAGE.
PERFORM END_PAGE.
*&---------------------------------------------------------------------*
*& Form check_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_PO.
CLEAR : IEKKO.
SELECT SINGLE * INTO IEKKO FROM EKKO
WHERE EBELN = EBELN AND BSTYP = 'F' AND SPRAS = SY-LANGU.
IF IEKKO IS INITIAL.
MESSAGE E260.
ENDIF.
ENDFORM. " check_PO
*&---------------------------------------------------------------------*
*& Form get_item
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_ITEM.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM EKPO
WHERE EBELN = EBELN AND LOEKZ NE 'L'.
ENDFORM. " get_item
*&---------------------------------------------------------------------*
*& Form get_pack
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_PACK.
LOOP AT ITAB.
CLEAR : ITAB_PACK.
SELECT * FROM ESLH WHERE EBELN = ITAB-EBELN AND
EBELP = ITAB-EBELP AND
SUM_NETWR = 0 .
ITAB_PACK-EBELN = ITAB-EBELN.
ITAB_PACK-EBELP = ITAB-EBELP.
SELECT * INTO CORRESPONDING FIELDS OF ITAB_PACK
FROM ESLL WHERE PACKNO = ESLH-PACKNO AND
TBTWR > 0 AND
PACKAGE <> 'X'.
ITAB_PACK-CNT = ITAB_PACK-CNT + 1.
APPEND ITAB_PACK.
ENDSELECT.
PERFORM SER_PACK USING ESLH.
ENDSELECT.
ENDLOOP.
ENDFORM. " get_pack
*&---------------------------------------------------------------------*
*& Form Display_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_REPORT.
TFLG = 'Y'.
SORT ITAB BY EBELN EBELP .
LOOP AT ITAB.
SKIP.
WRITE : /2 ITAB-EBELP, 10 ITAB-MATNR, 20 ITAB-TXZ01, 55 ITAB-MENGE,
73 ITAB-MEINS.
SKIP.
PERFORM DISPLAY_TEXT USING ITAB.
PERFORM DISPLAY_PACK USING ITAB-EBELN ITAB-EBELP.
PERFORM DISPLAY_PRICE USING ITAB .
CONCATENATE ITAB-EBELN ITAB-EBELP INTO NAME.
AT LAST.
PERFORM DISPLAY_TERM USING NAME .
ENDAT.
ENDLOOP.
ENDFORM. " Display_report
*&---------------------------------------------------------------------*
*& Form top_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TOP_PAGE.
CLEAR : ITAB, T001 , J_1IMOCOMP.
READ TABLE ITAB INDEX 1.
SELECT SINGLE * FROM T001 WHERE BUKRS = ITAB-BUKRS AND SPRAS = 'EN'.
SELECT SINGLE * FROM J_1IMOCOMP WHERE BUKRS = ITAB-BUKRS AND
WERKS = ITAB-WERKS.
SKIP.
WRITE : /(80) T001-BUTXT CENTERED.
SKIP.
WRITE : 65 'Sheet : ',SY-PAGNO.
WRITE : /32 'Order Annexure A'.
ULINE : /32(17).
WRITE : /20 'Order Number : ', 50 IEKKO-EBELN.
WRITE : /20 'Order Date : ' , 50 IEKKO-BEDAT.
WRITE : /20 'Excise Details :'.
WRITE : 50 J_1IMOCOMP-J_1IEXCD.
WRITE : /50 J_1IMOCOMP-J_1IEXRG.
WRITE : /50 J_1IMOCOMP-J_1IEXDI.
WRITE : /50 J_1IMOCOMP-J_1IEXCO.
SKIP.
WRITE : /2 'No. ', 10 'Item code ', 22 'Description ', 63 'Quantity',
73 'UOM'.
ULINE.
ENDFORM. " top_page
*&---------------------------------------------------------------------*
*& Form display_pack
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_PACK USING EBELN EBELP .
CLEAR : ITAB_PACK.
READ TABLE ITAB_PACK WITH KEY EBELN = EBELN EBELP = EBELP .
IF SY-SUBRC = 0.
PERFORM PACK_HEAD.
ENDIF.
LOOP AT ITAB_PACK WHERE EBELN = EBELN AND EBELP = EBELP.
WRITE :/2 ITAB_PACK-CNT LEFT-JUSTIFIED NO-GAP NO-ZERO,5 SY-VLINE,
35 SY-VLINE,36(9) ITAB_PACK-MENGE NO-GAP NO-ZERO DECIMALS 2,
44 SY-VLINE , 45 ITAB_PACK-MEINS,49 SY-VLINE,
50 ITAB_PACK-TBTWR NO-GAP NO-ZERO DECIMALS 2,64 SY-VLINE,
65 ITAB_PACK-NETWR NO-GAP NO-ZERO DECIMALS 2,80 SY-VLINE.
LCNT = 1.
CONCATENATE ITAB_PACK-PACKNO ITAB_PACK-INTROW INTO NAME.
LOOP AT TEXT WHERE TDOBJECT = 'ESLL' AND TDID CP 'L*'.
REFRESH : TLINE.
PERFORM READ_TEXT TABLES TLINE USING NAME TEXT-TDOBJECT TEXT-TDID.
LOOP AT TLINE.
REFRESH : WTXT.
PERFORM WRAPPING_TEXT TABLES WTXT USING TLINE-TDLINE.
LOOP AT WTXT.
IF LCNT NE 1.
NEW-LINE.
ENDIF.
WRITE : 6 WTXT-TEXT.
WRITE : 5 SY-VLINE, 35 SY-VLINE, 44 SY-VLINE,
49 SY-VLINE, 64 SY-VLINE, 80 SY-VLINE.
LCNT = LCNT + 1.
ENDLOOP.
ENDLOOP.
ENDLOOP.
WRITE : /5 SY-VLINE, 35 SY-VLINE, 44 SY-VLINE,
49 SY-VLINE, 64 SY-VLINE, 80 SY-VLINE.
AT LAST.
ULINE.
ENDAT .
ENDLOOP.
ENDFORM. " display_pack
*&---------------------------------------------------------------------*
*& Form pack_head
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PACK_HEAD.
WRITE : /8 'This covers the following services :'.
SKIP 2.
ULINE AT 2(80).
WRITE : /5 SY-VLINE, 35 SY-VLINE, 44 SY-VLINE, 49 SY-VLINE,
64 SY-VLINE, 80 SY-VLINE.
WRITE : /1 'Item ', 5 SY-VLINE, 10 'Description', 35 SY-VLINE,
38 'Qty', 44 SY-VLINE, 46 'UOM', 49 SY-VLINE, 55 'Rate',
64 SY-VLINE, 70 'Net value', 80 SY-VLINE..
WRITE : /5 SY-VLINE, 35 SY-VLINE, 44 SY-VLINE, 49 SY-VLINE,
64 SY-VLINE, 72 'in INR', 80 SY-VLINE..
WRITE : /5 SY-VLINE, 35 SY-VLINE, 44 SY-VLINE, 49 SY-VLINE,
64 SY-VLINE, 80 SY-VLINE..
ULINE AT 2(80).
ENDFORM. " pack_head
*&---------------------------------------------------------------------*
*& Form Text_object
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TEXT_OBJECT.
CLEAR TXTOBJ.
TXTOBJ-SIGN = 'I'.
TXTOBJ-OPTION = 'EQ'.
TXTOBJ-LOW = 'EKPO'.
APPEND TXTOBJ.
CLEAR TXTOBJ.
TXTOBJ-SIGN = 'I'.
TXTOBJ-OPTION = 'EQ'.
TXTOBJ-LOW = 'MATERIAL'.
APPEND TXTOBJ.
CLEAR TXTOBJ.
TXTOBJ-SIGN = 'I'.
TXTOBJ-OPTION = 'EQ'.
TXTOBJ-LOW = 'ESLL'.
APPEND TXTOBJ.
ENDFORM. " Text_object
*&---------------------------------------------------------------------*
*& Form Get_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_TEXT.
SELECT * INTO CORRESPONDING FIELDS OF TABLE TEXT
FROM TTXIT
WHERE TDOBJECT IN TXTOBJ AND TDSPRAS = 'EN'.
ENDFORM. " Get_text
*&---------------------------------------------------------------------*
*& Form read_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM READ_TEXT TABLES TLINE USING NAME OBJ ID.
REFRESH : TLINE.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = ID
LANGUAGE = SY-LANGU
NAME = NAME
OBJECT = OBJ
TABLES
LINES = TLINE
EXCEPTIONS
OBJECT = 1
ID = 2
NAME = 4
NOT_FOUND = 5.
ENDFORM. " read_text
*&---------------------------------------------------------------------*
*& Form wrapping_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRAPPING_TEXT TABLES WTXT USING TEXT.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
TEXTLINE = TEXT
OUTPUTLEN = 29
TABLES
OUT_LINES = WTXT.
ENDFORM. " wrapping_text
*&---------------------------------------------------------------------*
*& Form end_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM END_PAGE.
ULINE.
SKIP 5.
WRITE : 55 'Authorised signatory'.
ENDFORM. " end_page
*&---------------------------------------------------------------------*
*& Form display_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM DISPLAY_TEXT USING ITAB STRUCTURE ITAB.
CLEAR : TEXT,NAME.
READ TABLE TEXT WITH KEY TDID = 'BEST' TDOBJECT = 'MATERIAL'.
IF SY-SUBRC = 0.
NAME = ITAB-MATNR.
PERFORM READ_TEXT TABLES TLINE USING NAME TEXT-TDOBJECT
TEXT-TDID.
PERFORM TEXT_LINE TABLES TLINE.
ENDIF.
CONCATENATE ITAB-EBELN ITAB-EBELP INTO NAME.
LOOP AT TEXT WHERE TDID NE 'F01' AND TDOBJECT = 'EKPO'.
PERFORM READ_TEXT TABLES TLINE USING NAME TEXT-TDOBJECT
TEXT-TDID.
PERFORM TEXT_LINE TABLES TLINE.
ENDLOOP.
ENDFORM. " display_text
*&---------------------------------------------------------------------*
*& Form text_line
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TLINE text
*----------------------------------------------------------------------*
FORM TEXT_LINE TABLES TLINE STRUCTURE TLINE.
DATA : WTEXT LIKE TLINE-TDLINE,
WTEXT1 LIKE TLINE-TDLINE,
WTEXT2 LIKE TLINE-TDLINE,
WPRINT LIKE TLINE-TDLINE.
LOOP AT TLINE.
CLEAR WPRINT.
IF TLINE-TDLINE EQ SPACE.
SKIP.
ELSE.
WTEXT = TLINE-TDLINE.
DO .
SPLIT WTEXT AT ',,' INTO WTEXT1 WTEXT2.
IF WTEXT2 = SPACE.
CONCATENATE WPRINT WTEXT1 INTO WPRINT SEPARATED BY SPACE.
EXIT.
ENDIF.
CONCATENATE WPRINT ' ' WTEXT1 INTO WPRINT SEPARATED BY SPACE.
WTEXT = WTEXT2.
ENDDO.
WRITE : /2 WPRINT.
ENDIF.
ENDLOOP.
ENDFORM. " text_line
*&---------------------------------------------------------------------*
*& Form display_term
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM DISPLAY_TERM USING NAME .
PERFORM END_PAGE.
NEW-PAGE .
TFLG = 'N'.
SKIP TO LINE 5.
WRITE : 65 'Sheet : ',SY-PAGNO.
SKIP.
WRITE : /32 'Order Annexure B'.
ULINE:/32(17).
WRITE: /(80) ' TERMS AND CONDITIONS ' CENTERED .
LOOP AT TEXT WHERE TDID = 'F01' AND TDOBJECT = 'EKPO'.
PERFORM READ_TEXT TABLES TLINE USING NAME TEXT-TDOBJECT
TEXT-TDID.
PERFORM TEXT_LINE TABLES TLINE.
ENDLOOP.
PERFORM END_PAGE.
ENDFORM. " display_term
*&---------------------------------------------------------------------*
*& Form display_price
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB_EBELN text
* -->P_ITAB_EBELP text
*----------------------------------------------------------------------*
FORM DISPLAY_PRICE USING EKPO LIKE ITAB.
DATA : PER LIKE KONV-WAERS,
NUM LIKE KONV-KBETR,
RATE(18).
REFRESH : ITAB_COND.
PERFORM PRICE_HEADER.
PERFORM TAX_INDICATOR USING EKPO.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB_COND FROM KONV
WHERE KNUMV = IEKKO-KNUMV AND KPOSN = EKPO-EBELP AND
KBETR NE 0 AND NOT KSCHL IN KSCHL.
IF NOT IEKKO-BSART IN BSART.
CLEAR : NETAMT.
LOOP AT ITAB_COND WHERE KSCHL NE 'ZSTC' AND KSCHL IN COND.
CLEAR : ITAB_PRICE.
SELECT SINGLE VTEXT INTO ITAB_PRICE-VTEXT FROM T685T
WHERE KSCHL = ITAB_COND-KSCHL AND SPRAS = SY-LANGU.
MOVE-CORRESPONDING ITAB_COND TO ITAB_PRICE.
IF ITAB_COND-WAERS IS INITIAL.
PER = '%'.
NUM = ITAB_COND-KBETR / 10.
WRITE NUM TO RATE.
CONCATENATE '( @' RATE PER ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
ELSE.
PER = ITAB_COND-WAERS.
NUM = ITAB_COND-KBETR.
WRITE NUM TO RATE.
CONCATENATE RATE PER INTO ITAB_PRICE-UNIT
SEPARATED BY SPACE.
ENDIF.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
APPEND ITAB_PRICE.
ENDLOOP.
CLEAR XKOMV.
PERFORM TAX_SCHEMA TABLES XKOMV USING EKPO.
PERFORM EXICE_DUTY USING EKPO .
PERFORM EDU_CESS USING EKPO.
PERFORM SALES_TAX USING EKPO.
PERFORM SURCHARGE USING EKPO.
ELSE.
PERFORM SERVICE_PACK USING EKPO.
ENDIF.
PERFORM PRICE_DISPLAY.
.
ENDFORM. " display_price
*&---------------------------------------------------------------------*
*& Form cond_value
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COND_VALUE.
CLEAR KSCHL.
KSCHL-SIGN = 'I'.
KSCHL-OPTION = 'EQ'.
KSCHL-LOW = 'ZFRE'.
APPEND KSCHL.
CLEAR KSCHL.
KSCHL-SIGN = 'I'.
KSCHL-OPTION = 'EQ'.
KSCHL-LOW = 'JOCM'.
APPEND KSCHL.
CLEAR KSCHL.
KSCHL-SIGN = 'I'.
KSCHL-OPTION = 'EQ'.
KSCHL-LOW = 'NAVS'.
APPEND KSCHL.
CLEAR KSCHL.
KSCHL-SIGN = 'I'.
KSCHL-OPTION = 'EQ'.
KSCHL-LOW = 'FRA2'.
APPEND KSCHL.
CLEAR KSCHL.
KSCHL-SIGN = 'I'.
KSCHL-OPTION = 'EQ'.
KSCHL-LOW = 'FRA1'.
APPEND KSCHL.
ENDFORM. " cond_value
*&---------------------------------------------------------------------*
*& Form doc_type
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOC_TYPE.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZLW1'.
APPEND BSART.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZLW2'.
APPEND BSART.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZHW1'.
APPEND BSART.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZHW2'.
APPEND BSART.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZHWR'.
APPEND BSART.
CLEAR : BSART.
BSART-SIGN = 'I'.
BSART-OPTION = 'EQ'.
BSART-LOW = 'ZPWC'.
APPEND BSART.
ENDFORM. " doc_type
*&---------------------------------------------------------------------*
*& Form Price_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRICE_HEADER.
SKIP.
WRITE : /2 'Price Details : '.
REFRESH : COND.
IF IEKKO-BSART = 'ZA1' OR IEKKO-BSART = 'ZA2' OR
IEKKO-BSART = 'ZIEM' OR IEKKO-BSART = 'ZIRM' OR
IEKKO-BSART = 'ZIS1' OR IEKKO-BSART = 'ZIS2' OR
IEKKO-BSART = 'ZIST' OR IEKKO-BSART = 'ZIWR' .
WRITE : /65 IEKKO-INCO1.
CLEAR COND.
COND-SIGN = 'I'.
COND-OPTION = 'EQ'.
COND-LOW = 'PBXX'.
APPEND COND.
ENDIF.
SKIP.
WRITE : 38 'Unit rate ', 60 'Order value(in',
75 IEKKO-WAERS(4), ')'.
SKIP.
ENDFORM. " Price_header
*&---------------------------------------------------------------------*
*& Form exice_duty
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXICE_DUTY USING EKPO LIKE ITAB.
DATA : PER LIKE KONV-WAERS,
NUM LIKE KONV-KBETR,
RATE(18).
CLEAR : EXRATE, EXAMT.
PERFORM EXCIE_RATE USING EKPO CHANGING EXRATE EXAMT.
CLEAR : ITAB_COND.
READ TABLE ITAB_COND WITH KEY KSCHL = 'JEXC' .
IF SY-SUBRC NE 0 .
IF EXRATE > 0.
CLEAR : ITAB_PRICE.
ITAB_PRICE-KWERT = ( NETAMT * EXRATE ) / 100.
ITAB_PRICE-KSCHL = 'JEXC'.
ITAB_PRICE-VTEXT = 'Excise Duty'.
WRITE EXRATE TO RATE.
CONCATENATE '( @' RATE ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ELSEIF NOT EXAMT IS INITIAL .
CLEAR NUM.
IF NOT EKPO-MENGE IS INITIAL.
NUM = EXAMT / EKPO-MENGE.
ENDIF.
CLEAR : ITAB_PRICE.
ITAB_PRICE-KSCHL = 'JEXC'.
ITAB_PRICE-KWERT = EXAMT .
ITAB_PRICE-VTEXT = 'Excise Duty'.
WRITE NUM TO RATE.
CONCATENATE '( @' RATE ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
ENDIF.
ENDFORM. " exice_duty
*&---------------------------------------------------------------------*
*& Form price_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRICE_DISPLAY.
LOOP AT ITAB_PRICE.
WRITE : /5 ITAB_PRICE-VTEXT, 30 ITAB_PRICE-UNIT, 65 ITAB_PRICE-KWERT.
AT LAST.
SUM.
ULINE: /65(20).
WRITE : /5 'Net Value', 65 ITAB_PRICE-KWERT.
ULINE: /65(20).
ENDAT.
ENDLOOP.
ENDFORM. " price_display
*&---------------------------------------------------------------------*
*& Form excie_rate
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXCIE_RATE USING EKPO LIKE ITAB CHANGING RATE AMOUNT.
CLEAR : RATE , AMOUNT, LFM1.
SELECT SINGLE * FROM LFM1 WHERE LIFNR = IEKKO-LIFNR
AND EKORG = IEKKO-EKORG.
SELECT SINGLE * FROM A003 WHERE KAPPL = 'TX' AND
( KSCHL = 'JMO1' OR KSCHL = 'JM02' )
AND ALAND = IEKKO-LANDS AND
MWSKZ = EKPO-MWSKZ.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM KONP WHERE KNUMH = A003-KNUMH.
IF SY-SUBRC = 0 AND KONP-KBETR NE 0.
SELECT * FROM J_1IMOVEND WHERE LIFNR = IEKKO-LIFNR.
SELECT J_1IRATE INTO RATE FROM J_1ISSIRAT
WHERE J_1ISSIST = J_1IMOVEND-J_1ISSIST.
ENDSELECT.
ENDSELECT.
IF RATE = 0 AND LFM1-KALSK NE 'HS'.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
BUKRS = EKPO-BUKRS
WERKS = EKPO-WERKS
MATNR = EKPO-MATNR
VENDOR = IEKKO-LIFNR
KALSM = 'TAXINJ'
MWSKZ = EKPO-MWSKZ
TAX_DATE = IEKKO-AEDAT
MENGE = EKPO-MENGE
KAWRT = 0
UNIT = EKPO-MEINS
IMPORTING
EXC_AMOUNT = AMOUNT
EXC_PERC = RATE.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form edu_cess
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EDU_CESS USING EKPO LIKE ITAB.
DATA : ECESS TYPE KONV-KWERT,
NUMTAX LIKE KONV-KBETR,
RATE(18).
CLEAR : ITAB_PRICE.
READ TABLE ITAB_PRICE WITH KEY KSCHL = 'JEXC' .
IF SY-SUBRC = 0.
ECESS = ITAB_PRICE-KWERT.
ENDIF.
IF ECESS IS INITIAL.
LOOP AT XKOMV WHERE KSCHL = 'JEC1' OR KSCHL = 'JEC2' .
ECESS = XKOMV-KAWRT.
ENDLOOP.
ENDIF.
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND
( KSCHL = 'JEC1' OR KSCHL = 'JEC2' ) AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
EXIT.
ENDLOOP.
CLEAR : ITAB_PRICE.
ITAB_PRICE-KWERT = ( ECESS * NUMTAX ) / 100.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Educational CESS'.
WRITE NUMTAX TO RATE.
CONCATENATE '( @' RATE ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
ENDFORM. " edu_cess
*---------------------------------------------------------------------*
* FORM tax_schema *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> XKOMV *
* --> EKPO *
*---------------------------------------------------------------------*
FORM TAX_SCHEMA TABLES XKOMV USING EKPO LIKE ITAB.
HPRICE-ALAND = IEKKO-LANDS.
HPRICE-BUKRS = EKPO-BUKRS.
HPRICE-HWAER = IEKKO-WAERS.
HPRICE-WAERK = IEKKO-WAERS.
HPRICE-LIFNR = IEKKO-LIFNR.
HPRICE-KAPPL = 'TX'.
HPRICE-KALSM = 'TAXINJ'.
HPRICE-PRSDT = IEKKO-AEDAT.
HPRICE-TXJCD = EKPO-TXJCD.
HPRICE-EKORG = IEKKO-EKORG.
HPRICE-MWSKZ = EKPO-MWSKZ.
IPRICE-KPOSN = EKPO-EBELP.
IPRICE-MATNR = EKPO-MATNR.
IPRICE-WERKS = EKPO-WERKS.
IPRICE-MATKL = EKPO-MATKL.
IPRICE-MEINS = EKPO-MEINS.
IPRICE-MGLME = EKPO-MENGE.
IPRICE-NETWR = EKPO-NETWR.
IPRICE-WRBTR = EKPO-NETWR.
IPRICE-MWSKZ = EKPO-MWSKZ.
IPRICE-NETPR = EKPO-NETWR.
IPRICE-KURSK_DAT = IEKKO-AEDAT.
IPRICE-MTART = EKPO-MTART.
CALL FUNCTION 'PRICING'
EXPORTING
CALCULATION_TYPE = 'B'
COMM_HEAD_I = HPRICE
COMM_ITEM_I = IPRICE
TABLES
TKOMV = XKOMV.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form tax_indicator
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EKPO text
*----------------------------------------------------------------------*
FORM TAX_INDICATOR USING EKPO LIKE ITAB.
CHECK EKPO-MWSKZ <> ' ' AND EKPO-MWSKZ <> 'V0'.
SELECT * FROM A003 WHERE KAPPL = 'TX' AND ALAND = IEKKO-LANDS
AND MWSKZ = EKPO-MWSKZ.
SELECT SINGLE * FROM T685T WHERE KSCHL = A003-KSCHL AND
SPRAS = SY-LANGU.
SELECT SINGLE * FROM KONP WHERE KNUMH = A003-KNUMH .
IF KONP-KBETR > 0.
CLEAR : TAX.
TAX-EBELP = EKPO-EBELP.
TAX-MWSKZ = EKPO-MWSKZ.
TAX-TXJCD = EKPO-TXJCD.
TAX-VTEXT = T685T-VTEXT.
TAX-KNUMH = A003-KNUMH.
TAX-KBETR = KONP-KBETR.
TAX-KSCHL = A003-KSCHL.
APPEND TAX.
ENDIF.
ENDSELECT.
ENDFORM. " tax_indicator
*&---------------------------------------------------------------------*
*& Form sales_tax
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EKPO text
*----------------------------------------------------------------------*
FORM SALES_TAX USING EKPO LIKE ITAB.
DATA : ECESS TYPE KONV-KWERT,
NUMTAX LIKE KONV-KBETR,
RATE(18).
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND
( KSCHL = 'JIP1' OR KSCHL = 'JIP2' ) AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
EXIT.
ENDLOOP.
CLEAR : ITAB_PRICE.
LOOP AT XKOMV WHERE KSCHL = 'JIP1' OR KSCHL = 'JIP2' .
ITAB_PRICE-KWERT = ( NETAMT * NUMTAX ) / 100.
ENDLOOP.
CLEAR : ITAB_COND.
IF ITAB_PRICE-KWERT IS INITIAL.
READ TABLE ITAB_COND WITH KEY KSCHL = 'ZSTC'.
IF SY-SUBRC = 0.
ITAB_PRICE-KWERT = ITAB_COND-KWERT.
IF ITAB_COND-WAERS IS INITIAL.
NUMTAX = ITAB_COND-KBETR / 10.
ELSE.
NUMTAX = ITAB_COND-KBETR.
ENDIF.
ENDIF.
ENDIF.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Sales tax'.
WRITE NUMTAX TO RATE.
CONDENSE RATE.
IF ITAB_COND-WAERS IS INITIAL.
CONCATENATE '( @' RATE ' %)'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
ELSE.
CONCATENATE RATE ITAB_COND-WAERS INTO ITAB_PRICE-UNIT
SEPARATED BY SPACE.
ENDIF.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
ENDFORM. " sales_tax
*&---------------------------------------------------------------------*
*& Form surcharge
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EKPO text
*----------------------------------------------------------------------*
FORM SURCHARGE USING EKPO LIKE ITAB.
DATA : NUMTAX LIKE KONV-KBETR,
RATE(18).
CLEAR : ITAB_PRICE.
LOOP AT XKOMV WHERE KSCHL = 'JIP4'.
ITAB_PRICE-KWERT = XKOMV-KWERT.
ENDLOOP.
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND KSCHL = 'JIP4' AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
EXIT.
ENDLOOP.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Surcharge on tax'.
WRITE NUMTAX TO RATE.
CONCATENATE '( @' RATE ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
ENDFORM. " surcharge
*---------------------------------------------------------------------*
* FORM ser_pack *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> ESLH *
*---------------------------------------------------------------------*
FORM SER_PACK USING ESLH TYPE ESLH.
SELECT * FROM KONV WHERE KNUMV = ESLH-KNUMV AND KSCHL <> 'PRS4' AND
KSCHL <> 'ZMI2' AND KSCHL <> 'ZFRE'.
CLEAR : T685T.
SELECT SINGLE * FROM T685T WHERE KSCHL = KONV-KSCHL AND
SPRAS = SY-LANGU.
CLEAR : SERPACK.
SERPACK-EBELP = ESLH-EBELP.
SERPACK-VTEXT = T685T-VTEXT.
SERPACK-KSCHL = KONV-KSCHL.
SERPACK-KWERT = KONV-KWERT.
SERPACK-KNUMV = KONV-KNUMV.
SERPACK-WTEMP = KONV-KBETR / 10.
IF SERPACK-WTEMP > 0.
APPEND SERPACK.
ENDIF.
ENDSELECT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Service_pack
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EKPO text
*----------------------------------------------------------------------*
FORM SERVICE_PACK USING EKPO LIKE ITAB.
DATA : SUM LIKE KONV-KBETR,RATE(18),
PER LIKE KONV-WAERS, NUM LIKE KONV-KBETR,
NUMTAX LIKE KONV-KBETR.
LOOP AT SERPACK WHERE EBELP = EKPO-EBELP.
SUM = SUM + SERPACK-KWERT.
ENDLOOP.
CLEAR : ITAB_PRICE.
ITAB_PRICE-KWERT = SUM.
ITAB_PRICE-VTEXT = SERPACK-VTEXT.
WRITE SERPACK-WTEMP TO RATE.
IF SERPACK-KSCHL = 'PRSX'.
ELSEIF SERPACK-KSCHL NE ''.
CONCATENATE '( @' RATE ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
ENDIF.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
LOOP AT ITAB_COND WHERE KSCHL NE 'ZSTC' AND KSCHL IN COND AND
KSCHL NE 'PBXX'.
CLEAR : ITAB_PRICE.
SELECT SINGLE VTEXT INTO ITAB_PRICE-VTEXT FROM T685T
WHERE KSCHL = ITAB_COND-KSCHL AND SPRAS = SY-LANGU.
MOVE-CORRESPONDING ITAB_COND TO ITAB_PRICE.
IF ITAB_COND-WAERS IS INITIAL.
PER = '%'.
NUM = ITAB_COND-KBETR / 10.
WRITE NUM TO RATE.
CONCATENATE '( @' RATE PER ' % )'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
ELSE.
PER = ITAB_COND-WAERS.
NUM = ITAB_COND-KBETR.
WRITE NUM TO RATE.
CONCATENATE RATE PER INTO ITAB_PRICE-UNIT
SEPARATED BY SPACE.
ENDIF.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
APPEND ITAB_PRICE.
ENDLOOP.
*Sales Tax
CLEAR : NUMTAX,ITAB_PRICE.
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND
( KSCHL = 'JIP1' OR KSCHL = 'JIP2' ) AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
ITAB_PRICE-KWERT = ( NETAMT * NUMTAX ) / 100.
EXIT.
ENDLOOP.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Sales tax'.
WRITE NUMTAX TO RATE.
CONDENSE RATE.
CONCATENATE '( @' RATE ' %)'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
*Service Tax
CLEAR : NUMTAX,ITAB_PRICE.
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND KSCHL = 'JSRT' AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
ITAB_PRICE-KWERT = ( NETAMT * NUMTAX ) / 100.
EXIT.
ENDLOOP.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Service Tax'.
WRITE NUMTAX TO RATE.
CONDENSE RATE.
CONCATENATE '( @' RATE ' %)'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
*Ecess on Service Tax.
CLEAR : NUMTAX,ITAB_PRICE.
LOOP AT TAX WHERE EBELP = EKPO-EBELP AND KSCHL = 'JEC3' AND
KBETR > 0 .
NUMTAX = TAX-KBETR / 10.
ITAB_PRICE-KWERT = ( NETAMT * NUMTAX ) / 100.
EXIT.
ENDLOOP.
IF NOT ITAB_PRICE-KWERT IS INITIAL.
ITAB_PRICE-VTEXT = 'Service Tax'.
WRITE NUMTAX TO RATE.
CONDENSE RATE.
CONCATENATE '( @' RATE ' %)'
INTO ITAB_PRICE-UNIT SEPARATED BY SPACE.
APPEND ITAB_PRICE.
NETAMT = NETAMT + ITAB_PRICE-KWERT.
ENDIF.
ENDFORM. " Service_packReward points if HELPFUL
~Lakshmiraj~
‎2008 Mar 29 4:58 PM
Hi,
In business process, there are so many transactions that take place in every day, like purchase orders, sales orders, delivery, gooodsmovement etc... SAP provided a feature to maintain some text descriptions.
Read_Text Function module is used to retrieve the text for a particular objects.
To find the Text id these are the following steps. Let us take an example of Billing document Header text.
1. goto VF03, enter Billing doc Number
2. from menuselect Goto>Header-->header Text..... New window will be displayed
3. select the Header Text. here you can see all the text.
4. click on the TEXT (which you want to know the Text id) , then press log ICON (you can find in bottom right of the text window) it looks like a rolled paper.
5. in the Next window you will find Text Name. Text ID, Language. etc...
Reward if helpful..
cheers,
Sreekar