‎2006 Jun 30 5:50 PM
Hi,
If someone can tell me how can I modularize the following code using just one read_text instead of using it 3 times for example, that would be great:
FORM GET_STD_TEXTS TABLES
T_DAMAGE_TRANSIT STRUCTURE TLINE
T_PACKING_SLIP STRUCTURE TLINE
T_HIPPER_AMOUNT STRUCTURE TLINE
Using v_lang.
DATA:lt_lines TYPE table of tline WITH HEADER LINE.
Reading Z_DAMAGE_TRANSIT
CLEAR lt_lines.
REFRESH lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = <b>'Z_DAMAGE_TRANSIT'</b>
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
<b>T_DAMAGE_TRANSIT</b>[] = lt_lines[].
ENDIF.
Reading Z_PACKING_SLIP
CLEAR lt_lines.
REFRESH lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = <b>'Z_PACKING_SLIP'</b>
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
<b>T_PACKING_SLIP[] </b> = lt_lines[].
ENDIF.
*Read Z_HIPPER_AMOUNT
CLEAR lt_lines.
REFRESH lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = <b>'Z_HIPPER_AMOUNT'</b>
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
<b>T_HIPPER_AMOUNT</b>[] = lt_lines[].
ENDIF.
ENDFORM
‎2006 Jun 30 8:15 PM
‎2006 Jun 30 5:54 PM
CREATE a FORM routine which will accept the name of the text and return you the TLINE structure.
Then you can call the PERFORM thrice once for each of the texts. Inside the form, call the read_text passing the text name.
FORM GET_TEXT USING TNAME LIKE TDNAME TABLES TEXT_LINES TYPE TLINE.
CALL FUNCTION READ_TEXT.
ENDFORM.
Regards,
Ravi
Message was edited by: Ravikumar Allampallam
‎2006 Jun 30 5:56 PM
Hi,
Check this code.....
FORM GET_STD_TEXTS TABLES
output STRUCTURE TLINE
Using v_lang
v_name.
DATA:lt_lines TYPE table of tline WITH HEADER LINE.
CLEAR lt_lines.
REFRESH lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = v_name
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
output[] = lt_lines[].
ENDIF.
ENDFORM
perform GET_STD_TEXTS TABLES i_tab using sy-langu Z_DAMAGE_TRANSIT .
call the perform as many times.....
laxman
‎2006 Jun 30 6:03 PM
*---------------------------------------------------------------------*
* FORM GET_STD_TEXTS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T_DAMAGE_TRANSIT *
* --> T_PACKING_SLIP *
* --> T_HIPPER_AMOUNT *
* --> V_LANG *
*---------------------------------------------------------------------*
FORM get_std_texts TABLES t_damage_transit STRUCTURE tline
t_packing_slip STRUCTURE tline
t_hipper_amount STRUCTURE tline
USING v_lang.
*-- Reading Z_DAMAGE_TRANSIT
PERFORM get_text_lines TABLES t_damage_transit
USING 'Z_DAMAGE_TRANSIT'
v_lang.
*-- Reading Z_PACKING_SLIP
PERFORM get_text_lines TABLES t_packing_slip
USING 'Z_PACKING_SLIP'
v_lang.
*-- Read Z_HIPPER_AMOUNT
PERFORM get_text_lines TABLES t_hipper_amount
USING 'Z_HIPPER_AMOUNT'
v_lang.
ENDFORM.
*---------------------------------------------------------------------*
* FORM get_text_lines *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TLINES *
* --> TEXT_NAME *
*---------------------------------------------------------------------*
FORM get_text_lines TABLES tlines STRUCTURE tline
USING text_name
language.
DATA: l_text_name LIKE thead-tdname.
CLEAR: l_text_name, tlines, tlines[].
l_text_name = text_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = language
name = l_text_name
object = 'TEXT'
TABLES
lines = tlines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc <> 0.
*-- message
ENDIF.
ENDFORM.Message was edited by: Srinivas Adavi
Just realized that all your internal tables are of the same structure, so you can use that straight.
‎2006 Jun 30 7:00 PM
Hi,
Actually I don't even want to call perform 3 times.
I know this is tricky.
I have a vague idea as how we can do but if someone can give a little more push it will be surely workable:
My idea:
Actually I wanted to create an internal table in the beginning which will be appended by name
of all the standard texts I want to read and also it will be appended by second field which will be again an internal table:
MAINITAB[]:
TAB_INSIDE_MAINTAB STDTEXT_name
T_DAMAGE_TRANSIT[] Z_DAMAGE TRANSIT
T_PACKING_SLIP[] Z_PACKING_SLIP
T_HIPPER_AMOUNT[] Z_HIPPER_AMOUNT
: :
: :
<b>How do I do this ?</b>
After this I wanted to LOOP at MAINTAB,
FORM GET_STD_TEXTS TABLES
T_DAMAGE_TRANSIT STRUCTURE TLINE
T_PACKING_SLIP STRUCTURE TLINE
T_HIPPER_AMOUNT STRUCTURE TLINE
USING V_LANG.
DATA:lt_lines TYPE table of tline WITH HEADER LINE.
Loop at MAIN_ITAB
CLEAR lt_lines.
REFRESH lt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = <b>MAINTAB-STDTEXT_name</b>
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
<b>MAINTAB-TAB_INT_TAB_INSIDE_MAINTAB[] </b> = lt_lines[].
ENDIF.
ENDLOOP.
ENDFORM.
After this perform will be like this, <b>hence I don't have to use perform statement just once...</b>
PERFORM GET_STD_TEXTS TABLES
G_DAMAGE_TRANSIT
G_PACKING_SLIP
G_HIPPER_AMOUNT
USING V_LANG.
Thanks.
‎2006 Jun 30 8:03 PM
Check this. It works for me(of course with different text names!!!).
*---------------------------------------------------------------------*
* FORM GET_STD_TEXTS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T_DAMAGE_TRANSIT *
* --> T_PACKING_SLIP *
* --> T_HIPPER_AMOUNT *
* --> V_LANG *
*---------------------------------------------------------------------*
FORM get_std_texts TABLES t_damage_transit STRUCTURE tline
t_packing_slip STRUCTURE tline
t_hipper_amount STRUCTURE tline
USING v_lang.
DATA: l_text_name LIKE thead-tdname.
TYPES: tlines TYPE tline OCCURS 0.
DATA: BEGIN OF main_tab OCCURS 0,
itab_name(30),
text_name TYPE thead-tdname.
DATA: END OF main_tab.
FIELD-SYMBOLS: <fs_itab> TYPE STANDARD TABLE.
main_tab-itab_name = 'T_DAMAGE_TRANSIT[]'.
main_tab-text_name = 'Z_DAMAGE_TRANSIT'.
APPEND main_tab.
main_tab-itab_name = 'T_PACKING_SLIP[]'.
main_tab-text_name = 'Z_PACKING_SLIP'.
APPEND main_tab.
main_tab-itab_name = 'T_HIPPER_AMOUNT[]'.
main_tab-text_name = 'Z_HIPPER_AMOUNT'.
APPEND main_tab.
LOOP AT main_tab.
ASSIGN (main_tab-itab_name) TO <fs_itab>.
l_text_name = main_tab-text_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = v_lang
name = l_text_name
object = 'TEXT'
TABLES
lines = <fs_itab>
EXCEPTIONS
OTHERS = 8.
IF sy-subrc <> 0.
*-- message
ENDIF.
ENDLOOP.
ENDFORM.Message was edited by: Srinivas Adavi
‎2006 Jun 30 6:05 PM
hi tushar,
FORM GET_STD_TEXTS TABLES
T_DAMAGE_TRANSIT STRUCTURE TLINE
T_PACKING_SLIP STRUCTURE TLINE
T_HIPPER_AMOUNT STRUCTURE TLINE
Using v_lang.
DATA:lt_lines TYPE table of tline WITH HEADER LINE.
Reading Z_DAMAGE_TRANSIT
CLEAR lt_lines.
REFRESH lt_lines.
perform sub_function using v_name
changing v_tables.
T_DAMAGE_TRANSIT[] = v_tables.
Reading Z_PACKING_SLIP
CLEAR lt_lines.
REFRESH lt_lines.
perform sub_function using v_name
changing v_tables.
T_PACKING_SLIP[] = v_tables.
*Read Z_HIPPER_AMOUNT
CLEAR lt_lines.
REFRESH lt_lines.
perform sub_function using v_name
changing v_tables.
IT_HIPPER_AMOUNT[] = v_tables.
ENDFORM
form sub_function using v_name1 changing v_tables1.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = V_LANG
name = v_form
object = 'TEXT'
TABLES
lines = lt_lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
v_tables1 = lt_lines[].
ENDIF.
endform.
reward if helpful.
regards,
keerthi.
‎2006 Jun 30 8:15 PM