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

Report on smartform.Replace select endselect with something to efficient it

Former Member
0 Likes
430

To make a smartform report efficient by removing all occurs & modify internal table statements.

What i have been given to do is to select all data from respective tables put them into one internal table & then finally making tab2 or tab3 in the report to be the final table.I am not sure which among these two i can make final table.

THE CODE is:

REPORT zgr_note.

TABLES : mseg, "Document Segment : Material

prps, "WBS element master data

proj, "Project Definition

mkpf, "Header : Material Document

lfa1, "Vendor Master

makt, "Material Description

aufk, "Order Master Data

afvc. "Operation within an order

DATA : fname LIKE rs38l-name. "Name of Function Module

DATA: lf_fm_name TYPE rs38l_fnam.

DATA: ls_control_param TYPE ssfctrlop.

DATA: ls_composer_param TYPE ssfcompop.

DATA: ls_recipient TYPE swotobjid.

DATA: ls_sender TYPE swotobjid.

DATA: lf_formname TYPE tdsfname.

DATA: ls_addr_key LIKE addr_key.

DATA: ls_dlv_land LIKE vbrk-land1.

DATA: ls_job_info TYPE ssfcrescl.

DATA: ls_otpt_opt TYPE ssfcompop.

DATA: retcode TYPE sy-subrc.

DATA: cntr TYPE i VALUE 0.

DATA: cntr1 TYPE i .

DATA: number TYPE SSFCRESCL-SPOOLIDS. " OCCURS 0 WITH HEADER LINE.

DATA: TSP01 type TABLE OF TSP01_SP0R.

DATA : BEGIN OF itab OCCURS 0.

INCLUDE STRUCTURE mseg.

DATA : post1 LIKE proj-post1, "Project Definition

pspnr LIKE proj-pspnr, "WBS element

maktx LIKE makt-maktx, "Material Description

name1 LIKE lfa1-name1, "Name of the supplier

budat LIKE mkpf-budat, "Posting date

bldat LIKE mkpf-bldat, "Document date

cpudt LIKE mkpf-cpudt, "Date on which account document was entered

psphi LIKE prps-psphi, "Current number of project

post2 LIKE prps-post1, "WBS Definition

xblnr LIKE mkpf-xblnr, "Reference number( in this case challan number)

bktxt LIKE mkpf-bktxt, "Header text

ort01 LIKE lfa1-ort01, "vendor city

ktext LIKE aufk-ktext, "network description

ltxa1 LIKE afvc-ltxa1. "operation short text

DATA : END OF itab.

DATA : BEGIN OF jtab OCCURS 0.

INCLUDE STRUCTURE itab.

DATA : END OF jtab.

DATA : itab1 LIKE itab OCCURS 0

WITH HEADER LINE.

DATA :itab2 LIKE itab OCCURS 0

WITH HEADER LINE.

DATA: itab3 LIKE itab OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.

SELECT-OPTIONS : gr_num FOR mseg-mblnr . "no INTERVALS.

PARAMETERS : gr_note LIKE itemset-xopsel RADIOBUTTON GROUP rad1.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS : mat_num FOR mseg-mblnr . "no INTERVALS.

PARAMETERS : mat_slip LIKE itemset-xopsel RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN SKIP.

CASE 'X'.

WHEN gr_note.

PERFORM gr_display.

WHEN mat_slip.

PERFORM mat_display.

ENDCASE.

FORM gr_display .

*break developer1.

SELECT mblnr mjahr matnr werks lgort lifnr menge meins

erfmg bpmng ebeln ps_psp_pnr zeile lsmng erfme

FROM mseg

INTO CORRESPONDING FIELDS OF TABLE itab

WHERE mblnr IN gr_num.

LOOP AT itab.

SELECT pspnr psphi post1 INTO CORRESPONDING FIELDS OF itab1

FROM prps WHERE pspnr = itab-ps_psp_pnr.

itab-psphi = itab1-psphi.

itab-pspnr = itab1-pspnr.

itab-post2 = itab1-post1.

MODIFY itab TRANSPORTING psphi pspnr post2.

ENDSELECT.

SELECT post1 FROM proj INTO CORRESPONDING FIELDS OF itab2

WHERE pspnr = itab-psphi.

itab-post1 = itab2-post1.

MODIFY itab TRANSPORTING post1.

ENDSELECT.

REFRESH itab2.

SELECT maktx FROM makt INTO CORRESPONDING FIELDS OF itab2

WHERE matnr = itab-matnr.

itab-maktx = itab2-maktx.

MODIFY itab TRANSPORTING maktx.

ENDSELECT.

REFRESH itab2.

SELECT name1 ort01 FROM lfa1 INTO CORRESPONDING FIELDS OF itab2

WHERE lifnr = itab-lifnr.

itab-name1 = itab2-name1.

itab-ort01 = itab2-ort01.

MODIFY itab TRANSPORTING name1 ort01.

ENDSELECT.

REFRESH itab2.

SELECT budat bldat cpudt xblnr bktxt FROM mkpf

INTO CORRESPONDING FIELDS OF itab2

WHERE mblnr = itab-mblnr.

itab-budat = itab2-budat.

itab-bldat = itab2-bldat.

itab-cpudt = itab2-cpudt.

itab-xblnr = itab2-xblnr.

itab-bktxt = itab2-bktxt.

MODIFY itab TRANSPORTING budat bldat cpudt xblnr bktxt.

ENDSELECT.

ENDLOOP.

LOOP AT itab .

ON CHANGE OF itab-mblnr.

itab3-mblnr = itab-mblnr.

itab3-post1 = itab-post1.

itab3-post2 = itab-post2.

itab3-name1 = itab-name1.

itab3-ort01 = itab-ort01.

itab3-bldat = itab-bldat.

APPEND itab3.

CLEAR itab3.

ENDON.

ENDLOOP.

jtab-mblnr = itab-mblnr.

jtab-xblnr = itab-xblnr.

jtab-budat = itab-budat.

jtab-bktxt = itab-bktxt.

jtab-lsmng = itab-lsmng.

jtab-erfmg = itab-erfmg.

jtab-erfme = itab-erfme.

jtab-matnr = itab-matnr.

jtab-maktx = itab-maktx.

jtab-zeile = itab-zeile.

APPEND jtab.

LOOP AT itab3.

CLEAR: itab2,itab2[].

LOOP AT itab WHERE mblnr = itab3-mblnr.

MOVE-CORRESPONDING itab TO itab2.

APPEND itab2.

CLEAR itab2.

ENDLOOP.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_GOODS_RECEIPT1'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = fname

  • EXCEPTIONS

  • NO_FORM = 1

  • NO_FUNCTION_MODULE = 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.

*break developer1.

PERFORM print_parameters.

CALL FUNCTION fname

EXPORTING

control_parameters = ls_control_param

output_options = ls_otpt_opt

user_settings = 'X'

gr_mseg_hdr = itab3

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

gr_mseg = itab2

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

ENDFORM. " GR_DISPLAY

FORM mat_display .

SELECT mblnr mjahr matnr werks lgort lifnr menge meins

erfmg bpmng ebeln ps_psp_pnr zeile lsmng erfme

mat_pspnr nplnr aufpl aplzl

FROM mseg

INTO CORRESPONDING FIELDS OF TABLE itab

WHERE mblnr IN mat_num.

LOOP AT itab.

SELECT ltxa1 FROM afvc INTO CORRESPONDING FIELDS OF itab1

WHERE aufpl = itab-aufpl AND aplzl = itab-aplzl.

itab-ltxa1 = itab1-ltxa1.

MODIFY itab TRANSPORTING ltxa1.

ENDSELECT.

REFRESH itab1.

SELECT ktext FROM aufk INTO CORRESPONDING FIELDS OF itab1

WHERE aufnr = itab-nplnr.

itab-ktext = itab1-ktext.

MODIFY itab TRANSPORTING ktext.

ENDSELECT.

REFRESH itab1.

SELECT pspnr psphi post1 INTO CORRESPONDING FIELDS OF itab1

FROM prps WHERE pspnr = itab-mat_pspnr.

itab-psphi = itab1-psphi.

itab-pspnr = itab1-pspnr.

itab-post2 = itab1-post1.

MODIFY itab TRANSPORTING psphi pspnr post2.

ENDSELECT.

SELECT post1 FROM proj INTO CORRESPONDING FIELDS OF itab2

WHERE pspnr = itab-psphi.

itab-post1 = itab2-post1.

MODIFY itab TRANSPORTING post1.

ENDSELECT.

REFRESH itab2.

SELECT maktx FROM makt INTO CORRESPONDING FIELDS OF itab2

WHERE matnr = itab-matnr.

itab-maktx = itab2-maktx.

MODIFY itab TRANSPORTING maktx.

ENDSELECT.

REFRESH itab2.

SELECT name1 ort01 FROM lfa1 INTO CORRESPONDING FIELDS OF itab2

WHERE lifnr = itab-lifnr.

itab-name1 = itab2-name1.

itab-ort01 = itab2-ort01.

MODIFY itab TRANSPORTING name1 ort01.

ENDSELECT.

REFRESH itab2.

SELECT budat bldat cpudt xblnr bktxt FROM mkpf

INTO CORRESPONDING FIELDS OF itab2

WHERE mblnr = itab-mblnr.

itab-budat = itab2-budat.

itab-bldat = itab2-bldat.

itab-cpudt = itab2-cpudt.

itab-xblnr = itab2-xblnr.

itab-bktxt = itab2-bktxt.

  • break developer1.

MODIFY itab TRANSPORTING budat bldat cpudt xblnr bktxt.

ENDSELECT.

ENDLOOP.

LOOP AT itab.

ON CHANGE OF itab-mblnr.

itab3-mblnr = itab-mblnr.

itab3-budat = itab-budat.

itab3-bldat = itab-bldat.

itab3-post1 = itab-post1.

itab3-ktext = itab-ktext.

APPEND itab3.

CLEAR itab3.

ENDON.

ENDLOOP.

LOOP AT itab3.

CLEAR: itab2, itab2[].

LOOP AT itab WHERE mblnr EQ itab3-mblnr.

MOVE-CORRESPONDING itab TO itab2.

APPEND itab2.

CLEAR itab2.

ENDLOOP.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_MAT_ISSUE_SLIP'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = fname

  • EXCEPTIONS

  • NO_FORM = 1

  • NO_FUNCTION_MODULE = 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.

ls_control_param-no_dialog = 'X'.

*ls_control_param-preview = 'X'.

*ls_control_param-getotf = 'X'.

  • ls_otpt_opt-tdnoprev = 'X'.

ls_otpt_opt-tdnewid = ''.

ls_otpt_opt-tdimmed = 'X'.

ls_otpt_opt-tddest = 'LP01'.

CALL FUNCTION fname

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = ls_control_param

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = ls_otpt_opt

user_settings = 'X'

mat_slip_hdr = itab3

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = ls_job_info

  • JOB_OUTPUT_OPTIONS =

TABLES

mat_slip = itab2

  • EXCEPTIONS

  • FORMATTING_ERROR = 1

  • INTERNAL_ERROR = 2

  • SEND_ERROR = 3

  • USER_CANCELED = 4

  • OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

ENDFORM.

To make a smartform report efficient by removing all occurs & modify internal table statements.

What i have been given to do is to select all data from respective tables put them into one internal table & then finally making tab2 or tab3 in the report to be the final table.I am not sure which among these two i can make final table.

THE CODE is:

REPORT zgr_note.

TABLES : mseg, "Document Segment : Material

prps, "WBS element master data

proj, "Project Definition

mkpf, "Header : Material Document

lfa1, "Vendor Master

makt, "Material Description

aufk, "Order Master Data

afvc. "Operation within an order

DATA : fname LIKE rs38l-name. "Name of Function Module

DATA: lf_fm_name TYPE rs38l_fnam.

DATA: ls_control_param TYPE ssfctrlop.

DATA: ls_composer_param TYPE ssfcompop.

DATA: ls_recipient TYPE swotobjid.

DATA: ls_sender TYPE swotobjid.

DATA: lf_formname TYPE tdsfname.

DATA: ls_addr_key LIKE addr_key.

DATA: ls_dlv_land LIKE vbrk-land1.

DATA: ls_job_info TYPE ssfcrescl.

DATA: ls_otpt_opt TYPE ssfcompop.

DATA: retcode TYPE sy-subrc.

DATA: cntr TYPE i VALUE 0.

DATA: cntr1 TYPE i .

DATA: number TYPE SSFCRESCL-SPOOLIDS. " OCCURS 0 WITH HEADER LINE.

DATA: TSP01 type TABLE OF TSP01_SP0R.

DATA : BEGIN OF itab OCCURS 0.

INCLUDE STRUCTURE mseg.

DATA : post1 LIKE proj-post1, "Project Definition

pspnr LIKE proj-pspnr, "WBS element

maktx LIKE makt-maktx, "Material Description

name1 LIKE lfa1-name1, "Name of the supplier

budat LIKE mkpf-budat, "Posting date

bldat LIKE mkpf-bldat, "Document date

cpudt LIKE mkpf-cpudt, "Date on which account document was entered

psphi LIKE prps-psphi, "Current number of project

post2 LIKE prps-post1, "WBS Definition

xblnr LIKE mkpf-xblnr, "Reference number( in this case challan number)

bktxt LIKE mkpf-bktxt, "Header text

ort01 LIKE lfa1-ort01, "vendor city

ktext LIKE aufk-ktext, "network description

ltxa1 LIKE afvc-ltxa1. "operation short text

DATA : END OF itab.

DATA : BEGIN OF jtab OCCURS 0.

INCLUDE STRUCTURE itab.

DATA : END OF jtab.

DATA : itab1 LIKE itab OCCURS 0

WITH HEADER LINE.

DATA :itab2 LIKE itab OCCURS 0

WITH HEADER LINE.

DATA: itab3 LIKE itab OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.

SELECT-OPTIONS : gr_num FOR mseg-mblnr . "no INTERVALS.

PARAMETERS : gr_note LIKE itemset-xopsel RADIOBUTTON GROUP rad1.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS : mat_num FOR mseg-mblnr . "no INTERVALS.

PARAMETERS : mat_slip LIKE itemset-xopsel RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN SKIP.

CASE 'X'.

WHEN gr_note.

PERFORM gr_display.

WHEN mat_slip.

PERFORM mat_display.

ENDCASE.

FORM gr_display .

*break developer1.

SELECT mblnr mjahr matnr werks lgort lifnr menge meins

erfmg bpmng ebeln ps_psp_pnr zeile lsmng erfme

FROM mseg

INTO CORRESPONDING FIELDS OF TABLE itab

WHERE mblnr IN gr_num.

LOOP AT itab.

SELECT pspnr psphi post1 INTO CORRESPONDING FIELDS OF itab1

FROM prps WHERE pspnr = itab-ps_psp_pnr.

itab-psphi = itab1-psphi.

itab-pspnr = itab1-pspnr.

itab-post2 = itab1-post1.

MODIFY itab TRANSPORTING psphi pspnr post2.

ENDSELECT.

SELECT post1 FROM proj INTO CORRESPONDING FIELDS OF itab2

WHERE pspnr = itab-psphi.

itab-post1 = itab2-post1.

MODIFY itab TRANSPORTING post1.

ENDSELECT.

REFRESH itab2.

SELECT maktx FROM makt INTO CORRESPONDING FIELDS OF itab2

WHERE matnr = itab-matnr.

itab-maktx = itab2-maktx.

MODIFY itab TRANSPORTING maktx.

ENDSELECT.

REFRESH itab2.

SELECT name1 ort01 FROM lfa1 INTO CORRESPONDING FIELDS OF itab2

WHERE lifnr = itab-lifnr.

itab-name1 = itab2-name1.

itab-ort01 = itab2-ort01.

MODIFY itab TRANSPORTING name1 ort01.

ENDSELECT.

REFRESH itab2.

SELECT budat bldat cpudt xblnr bktxt FROM mkpf

INTO CORRESPONDING FIELDS OF itab2

WHERE mblnr = itab-mblnr.

itab-budat = itab2-budat.

itab-bldat = itab2-bldat.

itab-cpudt = itab2-cpudt.

itab-xblnr = itab2-xblnr.

itab-bktxt = itab2-bktxt.

MODIFY itab TRANSPORTING budat bldat cpudt xblnr bktxt.

ENDSELECT.

ENDLOOP.

LOOP AT itab .

ON CHANGE OF itab-mblnr.

itab3-mblnr = itab-mblnr.

itab3-post1 = itab-post1.

itab3-post2 = itab-post2.

itab3-name1 = itab-name1.

itab3-ort01 = itab-ort01.

itab3-bldat = itab-bldat.

APPEND itab3.

CLEAR itab3.

ENDON.

ENDLOOP.

jtab-mblnr = itab-mblnr.

jtab-xblnr = itab-xblnr.

jtab-budat = itab-budat.

jtab-bktxt = itab-bktxt.

jtab-lsmng = itab-lsmng.

jtab-erfmg = itab-erfmg.

jtab-erfme = itab-erfme.

jtab-matnr = itab-matnr.

jtab-maktx = itab-maktx.

jtab-zeile = itab-zeile.

APPEND jtab.

LOOP AT itab3.

CLEAR: itab2,itab2[].

LOOP AT itab WHERE mblnr = itab3-mblnr.

MOVE-CORRESPONDING itab TO itab2.

APPEND itab2.

CLEAR itab2.

ENDLOOP.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_GOODS_RECEIPT1'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = fname

  • EXCEPTIONS

  • NO_FORM = 1

  • NO_FUNCTION_MODULE = 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.

*break developer1.

PERFORM print_parameters.

CALL FUNCTION fname

EXPORTING

control_parameters = ls_control_param

output_options = ls_otpt_opt

user_settings = 'X'

gr_mseg_hdr = itab3

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

gr_mseg = itab2

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

ENDFORM. " GR_DISPLAY

FORM mat_display .

SELECT mblnr mjahr matnr werks lgort lifnr menge meins

erfmg bpmng ebeln ps_psp_pnr zeile lsmng erfme

mat_pspnr nplnr aufpl aplzl

FROM mseg

INTO CORRESPONDING FIELDS OF TABLE itab

WHERE mblnr IN mat_num.

LOOP AT itab.

SELECT ltxa1 FROM afvc INTO CORRESPONDING FIELDS OF itab1

WHERE aufpl = itab-aufpl AND aplzl = itab-aplzl.

itab-ltxa1 = itab1-ltxa1.

MODIFY itab TRANSPORTING ltxa1.

ENDSELECT.

REFRESH itab1.

SELECT ktext FROM aufk INTO CORRESPONDING FIELDS OF itab1

WHERE aufnr = itab-nplnr.

itab-ktext = itab1-ktext.

MODIFY itab TRANSPORTING ktext.

ENDSELECT.

REFRESH itab1.

SELECT pspnr psphi post1 INTO CORRESPONDING FIELDS OF itab1

FROM prps WHERE pspnr = itab-mat_pspnr.

itab-psphi = itab1-psphi.

itab-pspnr = itab1-pspnr.

itab-post2 = itab1-post1.

MODIFY itab TRANSPORTING psphi pspnr post2.

ENDSELECT.

SELECT post1 FROM proj INTO CORRESPONDING FIELDS OF itab2

WHERE pspnr = itab-psphi.

itab-post1 = itab2-post1.

MODIFY itab TRANSPORTING post1.

ENDSELECT.

REFRESH itab2.

SELECT maktx FROM makt INTO CORRESPONDING FIELDS OF itab2

WHERE matnr = itab-matnr.

itab-maktx = itab2-maktx.

MODIFY itab TRANSPORTING maktx.

ENDSELECT.

REFRESH itab2.

SELECT name1 ort01 FROM lfa1 INTO CORRESPONDING FIELDS OF itab2

WHERE lifnr = itab-lifnr.

itab-name1 = itab2-name1.

itab-ort01 = itab2-ort01.

MODIFY itab TRANSPORTING name1 ort01.

ENDSELECT.

REFRESH itab2.

SELECT budat bldat cpudt xblnr bktxt FROM mkpf

INTO CORRESPONDING FIELDS OF itab2

WHERE mblnr = itab-mblnr.

itab-budat = itab2-budat.

itab-bldat = itab2-bldat.

itab-cpudt = itab2-cpudt.

itab-xblnr = itab2-xblnr.

itab-bktxt = itab2-bktxt.

  • break developer1.

MODIFY itab TRANSPORTING budat bldat cpudt xblnr bktxt.

ENDSELECT.

ENDLOOP.

LOOP AT itab.

ON CHANGE OF itab-mblnr.

itab3-mblnr = itab-mblnr.

itab3-budat = itab-budat.

itab3-bldat = itab-bldat.

itab3-post1 = itab-post1.

itab3-ktext = itab-ktext.

APPEND itab3.

CLEAR itab3.

ENDON.

ENDLOOP.

LOOP AT itab3.

CLEAR: itab2, itab2[].

LOOP AT itab WHERE mblnr EQ itab3-mblnr.

MOVE-CORRESPONDING itab TO itab2.

APPEND itab2.

CLEAR itab2.

ENDLOOP.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_MAT_ISSUE_SLIP'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = fname

  • EXCEPTIONS

  • NO_FORM = 1

  • NO_FUNCTION_MODULE = 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.

ls_control_param-no_dialog = 'X'.

*ls_control_param-preview = 'X'.

*ls_control_param-getotf = 'X'.

  • ls_otpt_opt-tdnoprev = 'X'.

ls_otpt_opt-tdnewid = ''.

ls_otpt_opt-tdimmed = 'X'.

ls_otpt_opt-tddest = 'LP01'.

CALL FUNCTION fname

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = ls_control_param

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = ls_otpt_opt

user_settings = 'X'

mat_slip_hdr = itab3

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = ls_job_info

  • JOB_OUTPUT_OPTIONS =

TABLES

mat_slip = itab2

  • EXCEPTIONS

  • FORMATTING_ERROR = 1

  • INTERNAL_ERROR = 2

  • SEND_ERROR = 3

  • USER_CANCELED = 4

  • OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

ENDFORM.

1 REPLY 1
Read only

Former Member
0 Likes
395

Hi saswat mohanty ,

Welcome to SDN. Ya your program takes lot of time to give the output becauase of more select endselects in a loop.

You are hitting as many times as the records in the ITAB.

Instead use "for all entries" clause for fetching the complete data from a table atonce.

Example: your itab is there.

Select * from xyz

into table itab2

for all entries in itab

where field1 eq itab-field1

and field2 eq itab-field2.

After fetching the data you can populate the final table by looping through ITAB and itab2.

This is best procedure to reduce the load on database.

Implement this in your program to improve performance.

REWARD POINTS IF USEFUL.

Venkat.