‎2006 May 17 10:02 AM
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.
‎2006 May 17 10:12 AM
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
‎2006 May 17 10:15 AM
‎2006 May 17 10:24 AM
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.
‎2006 May 17 10:16 AM
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
‎2006 May 17 10:27 AM
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
‎2006 May 17 10:41 AM
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.
‎2006 May 17 11:00 AM
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.