Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Modularization...

Former Member
0 Likes
674

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
639

Can you also please close ?

Thanks

7 REPLIES 7
Read only

Former Member
0 Likes
639

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

Read only

Laxmana_Appana_
Active Contributor
0 Likes
639

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

Read only

0 Likes
639
*---------------------------------------------------------------------*
*       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.

Read only

0 Likes
639

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.

Read only

0 Likes
639

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

Read only

Former Member
0 Likes
639

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.

Read only

Former Member
0 Likes
640

Can you also please close ?

Thanks