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

Issue related to Module Pool Programming

Former Member
0 Likes
840

Hi,

I have one issue related to Dialog Programming.

I have developed a Dialog screen in that i have all the fields in display mode except one Field <b>License No</b> which is input enabled.

When i first come to this screen some fields will be defaulted with previous screen values.

Then i need to select <b>License No</b> to fill other fields.

So if i give license number and hit enter other fields will get filled. The other way of filling them is when i press <b>F4</b> on <b>License No</b> field it will diaply me set of valid licenses. They will be populated in Pop-Up Screen[Full Screen]. From there i will choose one license and related data will fall into main screen.

At this instance if i change the <b>license no</b> and hit enter again it is not displaying valid data into other fields. When i have checked this case in debug mode i found that the <b>License No</b> Screen field is not having any value in it, It is not capturing the value i have given into that field.

Can anybody tell me what can be the solution for the same!

Thanks in advance.

Thanks & Regards,

Prasad.

7 REPLIES 7
Read only

Former Member
0 Likes
795

hi prasad,

when you hit enter , based on License number fetch all the relevant info for the screen fields, and populate them.

how you are populating the other fields can you show it.

Regards

vijay

Read only

Former Member
0 Likes
795

check if ur clearing the screen valus in PBO anywhere

Read only

0 Likes
795

Hi Prasad,

Try with this function module

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

and the outcome will be in table parameter <tablename>.

*table declaration

DATA: <tablename> TYPE STANDARD TABLE OF ddshretval.

and follow the following code to read that table.

READ TABLE <tablename> INTO <table work area> INDEX 1.

IF sy-subrc EQ 0.

<parameter/var> = <table work area>.

ENDIF.

feel free for more info.

Read only

Former Member
0 Likes
795

HI Prasad

For this, when you enter Lisence No. You have to capture the screen field value and check for valid data.

I hope you are not capturing Screen field value after hitting enter.

Regards

Prabhakar

Read only

0 Likes
795

Hi,

When i first time enter into screen and give the License No and Hit Enter Then all the fields are getting displayed with correct data.

Now when i start all over again and come to that screen and hit F4 on that License No and then choose one record then then all the fields are getting populated correctly.

Now here when i change the license number here and hit enter if i see the License no field value in DEBUG mode it is not having any value so last row data from pop-up screen is getting displayed into screen that is wrong.

Enter is working very first time when i change the data and hit enter it is not capturing the value.

I am also posting code that in related to pop-up & Enter.

<b>When i press F4 on screen this is how i will get pop-up screen</b>

MODULE f4_help_for_zzexgen INPUT.

IF sy-ucomm NE '=ENTE'.

IF sy-ucomm NE '=BACK'.

IF sy-ucomm NE '=SAVE'.

PERFORM f_popup_select_license_data.

ELSEIF sy-ucomm EQ '=SAVE'.

IF v_clicked EQ c_a.

v_zzexgen = i_pdata-zzexgen.

  • Save Code[BDC]

ELSEIF v_clicked EQ c_d.

  • Save Code[BDC]

ENDIF.

PERFORM f_refresh_submit.

ENDIF.

  • ELSEIF sy-ucomm EQ '=BACK'.

*

  • CLEAR ok_9002.

  • LEAVE TO SCREEN 0.

ENDIF.

  • ELSEIF sy-ucomm EQ '=BACK'.

*

  • CLEAR ok_9002.

  • LEAVE TO SCREEN 0.

*

ELSEIF sy-ucomm EQ '=ENTE'.

PERFORM f_fetch_license_con_data_ente.

ENDIF.

ENDMODULE. " f4_help_for_zzexgen INPUT

<b>When i press Enter Following is the code by which i will populate data</b>

MODULE user_command_9002 INPUT.

CASE ok_9002.

WHEN c_back.

CLEAR ok_9002.

LEAVE TO SCREEN 0.

WHEN c_ente.

PERFORM f_fetch_license_con_data_ente.

WHEN c_save.

  • Saving Data Code

ENDCASE.

ENDMODULE. " USER_COMMAND_9002 INPUT

<b>All the Perform's code is as below:</b>

FORM f_popup_select_license_data .

  • Any Internal table validations for i_data can be done here

PERFORM f_fetch_license_data.

  • Build Field Catalog

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZEXGEN'.

k_fieldcat-ref_fieldname = 'ZZEXGEN'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'License No.'.

k_fieldcat-outputlen = '20'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZGEART'.

k_fieldcat-ref_fieldname = 'ZZGEART'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'License Type'.

k_fieldcat-outputlen = '4'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZGEGRU'.

k_fieldcat-ref_fieldname = 'ZZGEGRU'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Legal Reg. Type'.

k_fieldcat-outputlen = '2'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZGANDA'.

k_fieldcat-ref_fieldname = 'ZZGANDA'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Valid From'.

k_fieldcat-outputlen = '8'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZGENDA'.

k_fieldcat-ref_fieldname = 'ZZGENDA'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Valid To'.

k_fieldcat-outputlen = '8'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZBSTNK'.

k_fieldcat-ref_fieldname = 'ZZBSTNK'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Contract No'.

k_fieldcat-outputlen = '18'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ORGAMT'.

k_fieldcat-ref_fieldname = 'ORGAMT'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Original Amt'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = c_x..

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'REVAMT'.

k_fieldcat-ref_fieldname = 'REVAMT'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Revised Amt'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'CONAMT'.

k_fieldcat-ref_fieldname = 'CONAMT'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Amt. Consum.'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = c_x.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZALNUM'.

k_fieldcat-ref_fieldname = 'ZZALNUM'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Export Class'.

k_fieldcat-outputlen = '14'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZEMBGR'.

k_fieldcat-ref_fieldname = 'ZZEMBGR'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Grouping'.

k_fieldcat-outputlen = '14'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ZZSECGK'.

k_fieldcat-ref_fieldname = 'ZZSECGK'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Sp. Char. Code'.

k_fieldcat-outputlen = '5'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'ORGAMT1'.

k_fieldcat-ref_fieldname = 'ORGAMT1'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Original Amt'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'REVAMT1'.

k_fieldcat-ref_fieldname = 'REVAMT1'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Revised Amt.'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CLEAR k_fieldcat.

k_fieldcat-fieldname = 'CONAMT1'.

k_fieldcat-ref_fieldname = 'CONAMT1'.

k_fieldcat-ref_tabname = 'I_PDATA'.

k_fieldcat-seltext_m = 'Amt. Consum.'.

k_fieldcat-outputlen = '15'.

k_fieldcat-key = ' '.

APPEND k_fieldcat TO i_fieldcat.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = 'Choose'(250)

i_zebra = c_x

i_tabname = 'I_PDATA'

it_fieldcat = i_fieldcat

it_excluding = i_excl

i_screen_start_column = 1

i_screen_end_column = 10

i_selection = c_x

i_scroll_to_sel_line = c_x

IMPORTING

es_selfield = k_selfield

e_exit = v_exit

TABLES

t_outtab = i_pdata

EXCEPTIONS

OTHERS = 2. "#EC *

IF sy-subrc = 0 AND v_exit IS INITIAL.

CLEAR i_pdata.

READ TABLE i_pdata INDEX k_selfield-tabindex.

IF sy-subrc EQ 0.

  • Move all the fields of selected record into 9002 screen

CLEAR: i_updfld[], i_updfld.

i_updfld-fieldname = 'V_ZZEXGEN'.

i_updfld-fieldvalue = i_pdata-zzexgen.

APPEND i_updfld.

i_updfld-fieldname = 'V_ZZGEART'.

i_updfld-fieldvalue = i_pdata-zzgeart.

APPEND i_updfld.

i_updfld-fieldname = 'V_MODCO'.

  • F80062 <05/17/2006>

  • i_updfld-fieldvalue = i_data-modco.

  • F80062 <05/17/2006>

i_updfld-fieldvalue = c_b.

APPEND i_updfld.

MOVE i_pdata-orgamt TO l_orgamt.

i_updfld-fieldname = 'V_ZZGMAXW'.

i_updfld-fieldvalue = l_orgamt.

APPEND i_updfld.

MOVE i_pdata-revamt TO l_chgamt.

i_updfld-fieldname = 'V_ZZCHGAMT'.

i_updfld-fieldvalue = l_chgamt.

APPEND i_updfld.

MOVE i_pdata-conamt TO l_conamt.

i_updfld-fieldname = 'V_ZZGAUFW'.

i_updfld-fieldvalue = l_conamt.

APPEND i_updfld.

CALL FUNCTION 'DYNP_UPDATE_FIELDS'

EXPORTING

dyname = v_subdyname

dynumb = v_subdynumb

TABLES

dynpfields = i_updfld.

ENDIF.

ENDIF.

ENDFORM. " F_POPUP_SELECT_LICENSE_DATA

FORM f_fetch_license_con_data_ente .

IF v_clicked EQ c_a.

  • To fetch all the license control data

PERFORM f_fetch_license_data.

CALL FUNCTION 'DYNP_GET_STEPL'

IMPORTING

povstepl = v_step_line

EXCEPTIONS

stepl_not_found = 1

OTHERS = 2.

CLEAR: i_updfld[], i_updfld.

REFRESH: i_updfld[], i_updfld.

i_updfld-fieldname = 'V_ZZEXGEN'.

i_updfld-fieldvalue = i_pdata-zzexgen.

APPEND i_updfld.

i_updfld-fieldname = 'V_ZZGEART'.

i_updfld-fieldvalue = i_pdata-zzgeart.

APPEND i_updfld.

i_updfld-fieldname = 'V_MODCO'.

i_updfld-fieldvalue = i_data-modco.

i_updfld-fieldvalue = c_b.

APPEND i_updfld.

MOVE i_pdata-orgamt TO l_orgamt1.

i_updfld-fieldname = 'V_ZZGMAXW'.

i_updfld-fieldvalue = l_orgamt1.

APPEND i_updfld.

MOVE i_pdata-revamt TO l_chgamt1.

i_updfld-fieldname = 'V_ZZCHGAMT'.

i_updfld-fieldvalue = l_chgamt1.

APPEND i_updfld.

MOVE i_pdata-conamt TO l_conamt1.

i_updfld-fieldname = 'V_ZZGAUFW'.

i_updfld-fieldvalue = l_conamt1.

APPEND i_updfld.

CALL FUNCTION 'DYNP_UPDATE_FIELDS'

EXPORTING

dyname = v_subdyname

dynumb = v_subdynumb

TABLES

dynpfields = i_updfld.

COMMIT WORK AND WAIT.

ELSE.

CLEAR: i_data-exgen.

ENDIF.

ENDFORM. " f_fetch_license_con_data_ente

FORM f_fetch_license_data .

CLEAR: i_pdata, i_pdata1, i_pdata2, i_pdata3, i_pdata4.

REFRESH: i_pdata, i_pdata1, i_pdata2, i_pdata3, i_pdata4.

IF NOT i_data[] IS INITIAL.

IF v_zzexgen IS INITIAL.

SELECT zzexgen

zzalnum

zzembgr

zzsecgk

FROM zexport_class

INTO TABLE i_pdata1

FOR ALL ENTRIES IN i_data

WHERE zzalnum = i_data-alnum AND

zzembgr = i_data-embgr AND

zzsecgk = i_data-secgk.

ELSE.

SELECT zzexgen

zzalnum

zzembgr

zzsecgk

FROM zexport_class

INTO TABLE i_pdata1

FOR ALL ENTRIES IN i_data

WHERE zzexgen = v_zzexgen AND

zzalnum = i_data-alnum AND

zzembgr = i_data-embgr AND

zzsecgk = i_data-secgk.

ENDIF.

IF sy-subrc EQ 0.

ENDIF.

IF v_zzexgen IS INITIAL.

SELECT zzexgen

zzkunnr

FROM zexport_customer

INTO TABLE i_pdata2

FOR ALL ENTRIES IN i_data

WHERE zzkunnr = i_data-kunnr.

ELSE.

SELECT zzexgen

zzkunnr

FROM zexport_customer

INTO TABLE i_pdata2

FOR ALL ENTRIES IN i_data

WHERE zzexgen = v_zzexgen AND

zzkunnr = i_data-kunnr.

ENDIF.

IF sy-subrc EQ 0.

ENDIF.

IF v_zzexgen IS INITIAL.

SELECT zzexgen

zzgenla

FROM zexport_country

INTO TABLE i_pdata3

FOR ALL ENTRIES IN i_data

WHERE zzgenla = i_data-land1.

ELSE.

SELECT zzexgen

zzgenla

FROM zexport_country

INTO TABLE i_pdata3

FOR ALL ENTRIES IN i_data

WHERE zzexgen = v_zzexgen AND

zzgenla = i_data-land1.

ENDIF.

IF sy-subrc EQ 0.

ENDIF.

ENDIF.

LOOP AT i_pdata1.

READ TABLE i_pdata2

WITH KEY zzexgen = i_pdata1-zzexgen

BINARY SEARCH.

IF sy-subrc EQ 0.

READ TABLE i_pdata3 WITH KEY zzexgen = i_pdata1-zzexgen

BINARY SEARCH.

IF sy-subrc EQ 0.

MOVE i_pdata3-zzexgen TO i_pdata4-zzexgen.

APPEND i_pdata4.

CLEAR i_pdata4.

ENDIF.

ENDIF.

ENDLOOP.

SORT i_pdata4 BY zzexgen.

DELETE ADJACENT DUPLICATES FROM i_pdata4.

IF NOT i_pdata4[] IS INITIAL.

SELECT *

FROM zexport_header

INTO TABLE i_header

FOR ALL ENTRIES IN i_pdata4

WHERE zzexgen = i_pdata4-zzexgen AND

zzgegru = v_gegru.

IF sy-subrc EQ 0.

CLEAR i_header.

  • READ TABLE i_header INDEX 1.

LOOP AT i_header.

MOVE i_header-zzexgen TO i_pdata-zzexgen.

MOVE i_header-zzgeart TO i_pdata-zzgeart.

MOVE i_header-zzgegru TO i_pdata-zzgegru.

MOVE i_header-zzganda TO i_pdata-zzganda.

MOVE i_header-zzgenda TO i_pdata-zzgenda.

MOVE i_header-zzbstnk TO i_pdata-zzbstnk.

MOVE i_header-zzgmaxw TO i_pdata-orgamt.

MOVE i_header-zzchgamt TO i_pdata-revamt.

MOVE i_header-zzgaufw TO i_pdata-conamt.

SELECT *

FROM zexport_class

INTO TABLE i_class

WHERE zzexgen = i_pdata-zzexgen AND

zzalnum = v_alnum AND

zzembgr = v_embgr AND

zzsecgk = v_secgk.

IF sy-subrc EQ 0.

CLEAR i_class.

  • READ TABLE i_class INDEX 1.

LOOP AT i_class.

MOVE i_class-zzalnum TO i_pdata-zzalnum.

MOVE i_class-zzembgr TO i_pdata-zzembgr.

MOVE i_class-zzsecgk TO i_pdata-zzsecgk.

MOVE i_class-zzgmaxw TO i_pdata-orgamt1.

MOVE i_class-zzchgamt TO i_pdata-revamt1.

MOVE i_class-zzgaufw TO i_pdata-conamt1.

MOVE i_class-zzgennr TO i_pdata-zzgennr.

v_rev_consum_amt = i_pdata-revamt1 - i_pdata-conamt1.

APPEND i_pdata.

ENDLOOP.

ENDIF.

ENDLOOP.

ELSE.

  • MESSAGE e100 WITH text-035. " License Number not exists

ENDIF.

ENDIF.

ENDFORM. " f_fetch_license_data

Read only

pradiptakumar_mishra
Participant
0 Likes
795

Pls check if you have given any field checks i the pai of that screen.if you've then, use the update or save module after the chain..endchain block.

Read only

0 Likes
795

HI,

Yes i have given fields checks inside chain ... endchain.

<b>PROCESS AFTER INPUT.

CHAIN.

FIELD: v_vbeln,

v_posnr,

v_netwr,

v_gegru,

v_alnum,

v_embgr,

v_secgk,

v_zzexgen,

v_zzgeart,

v_modco,

v_zzgmaxw,

v_zzchgamt,

v_zzgaufw.

  • Module for validating input

MODULE pai_validate_inputs.

ENDCHAIN.

MODULE user_command_9002.</b>

This is the PAI code.

The MODULE user_command_9002. code is given previously.

What exactly i need to do in Save/Update module after above code!

<b>One more thing is there anyway we can capture data in a particular field as inline with user types in the data.</b> or Immedailtely after user enters license no can i capture data into other variable.

Thanks,

Prasad.