Google Search - Blog...........

Showing posts with label fm DYNP_VALUES_READ. Show all posts
Showing posts with label fm DYNP_VALUES_READ. Show all posts

ABAP - F4 (Value On Request) For Files On Presentation Or Application Server.


Report ztest.

DATA: l_true TYPE btch0000-char1.

DATA: v_file TYPE string,
l_path TYPE dxlpath,
l_abend_flag TYPE dxxabend,
file TYPE filename,
flag1 TYPE c.

DATA: it_fieldvalues TYPE STANDARD TABLE OF dynpread,
wa_fieldvalues TYPE dynpread.

*-----------------------------------------------------------------------------
*-- SELECTION- SCREEN
*-----------------------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_file(120) LOWER CASE OBLIGATORY.
PARAMETERS: p_appl RADIOBUTTON GROUP g1,
p_pres RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b1.

*-----------------------------------------------------------------------------
*-- AT SELECTION- SCREEN ( F4 functionality )
*-----------------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_file_name.
*-----------------------------------------------------------------------------
*-- START-OF-SELECTION.
*-----------------------------------------------------------------------------
START-OF-SELECTION.
IF p_appl = 'X'.
PERFORM validate_server_file.
ELSE.
PERFORM validate_presentation_server.
ENDIF.
*-----------------------------------------------------------------------------
*-- END-OF-SELECTION
*-----------------------------------------------------------------------------
END-OF-SELECTION.
IF flag1 = 'X'.
MESSAGE s777(hk) WITH 'File doesn''t exist'.
CLEAR flag1.
ENDIF.

*&---------------------------------------------------------------------*
*& Form validate_server_file
*&---------------------------------------------------------------------*

FORM validate_server_file.
DATA: l_file TYPE tpfht-pffile.
CLEAR l_file.
l_file = p_file.
CALL FUNCTION 'PFL_CHECK_OS_FILE_EXISTENCE'
EXPORTING
fully_qualified_filename = l_file
IMPORTING
file_exists = l_true.
IF l_true = space.
flag1 = 'X'.
STOP.
ENDIF.
ENDFORM. " validate_server_file

*&---------------------------------------------------------------------*
*& Form validate_presentation_server
*&---------------------------------------------------------------------*

FORM validate_presentation_server .
DATA: result,
xfile TYPE string.
xfile = p_file.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = xfile
RECEIVING
result = result.
IF result NE 'X'.
flag1 = 'X'.
STOP.
ENDIF.
ENDFORM. "validate_presentation_server

*&---------------------------------------------------------------------*
*& Form f4_file_name
*&---------------------------------------------------------------------*

FORM f4_file_name .
wa_fieldvalues-fieldname = 'P_PRES'.
APPEND wa_fieldvalues TO it_fieldvalues.
CLEAR wa_fieldvalues.

wa_fieldvalues-fieldname = 'P_APPL'.
APPEND wa_fieldvalues TO it_fieldvalues.
CLEAR wa_fieldvalues.

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = it_fieldvalues
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.

READ TABLE it_fieldvalues INTO wa_fieldvalues WITH KEY fieldname = 'P_APPL'.

IF wa_fieldvalues-fieldvalue = 'X'.
PERFORM get_f4_application.

ELSE.
PERFORM get_f4_presentation.

ENDIF.
ENDFORM. " f4_file_name

*&---------------------------------------------------------------------*
*& Form get_f4_presentation
*&---------------------------------------------------------------------*

FORM get_f4_presentation .
*-- F4 functionality for file name on Presentation Server

DATA: l_file TYPE string.
CALL METHOD cl_salv_test_data=>select_file
IMPORTING
filename = l_file.
p_file = l_file.
ENDFORM. " get_f4_presentation

*&---------------------------------------------------------------------*
*& Form get_f4_application
*&---------------------------------------------------------------------*

form get_f4_application .
*-- F4 functionality for filename on Application Server
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = 'A'
i_server = ' '
i_path = '/secure_data/data_mig/dev'
IMPORTING
o_path = l_path
abend_flag = l_abend_flag
EXCEPTIONS
communication_failure = 1
system_failure = 2
rfc_error = 3.

IF sy-subrc EQ 0.
p_file = l_path.
ENDIF.

IF l_abend_flag = 'X'.
EXIT.
ENDIF.

endform. " get_f4_application



ALSO READ:

- Sample Program On Use Of Selection Screen.

- Creating Tab-Strip Selection Screen tab-strip Without Using SE51.

- Change The Height Of The Screen Layout To Make It Full Screen.

- F4 (Value On Request) For Field Using FM RSISP_DDIC_F4_VALUES.

- F4 (Value On Request) For Organization Unit In HR Report Program.

- F4 (Value On Request) For Organization Unit In HR Report Program.

ABAP - Complex Selection Screen (Using Macros).

REPORT tabbed_sel_screen.

*-- Definitions to hold user command for subscreens
DATA: ucomm1 LIKE sy-ucomm,
ucomm2 LIKE sy-ucomm,
ucomm3 LIKE sy-ucomm.

*-- Macro to put checkbox on selection screen
*-- &1 - checbox parameter name
*-- &2 - text element (description)
*-- &3 - default value for checkbox

DEFINE make_checkbox.
selection-screen begin of line.
parameters: &1 as checkbox default &3.
selection-screen comment 3(60) &2.
selection-screen end of line.
END-OF-DEFINITION.

*-- Macro to put radiobutton on selection screen
*-- &1 - radiobutton parameter name
*-- &2 - text element (description)
*-- &3 - radiobutton group

DEFINE make_radiobutton.
selection-screen begin of line.
parameters: &1 radiobutton group &3.
selection-screen comment 3(60) &2.
selection-screen end of line.
END-OF-DEFINITION.

*-- Macro to put a parameter on selection screen
*-- &1 - parameter name
*-- &2 - text element (description)
*-- &3 - like data element
*-- &4 - default value

DEFINE make_parameter.
selection-screen begin of line.
selection-screen comment 1(30) &2.
selection-screen position pos_low.
parameters: &1 like &3 default &4.
selection-screen end of line.
END-OF-DEFINITION.

*-- Macro to put a dropdown listbox on selection screen
*-- &1 - parameter name
*-- &2 - length of listbox
*-- &3 - default value
*-- &4 - text element (description)

DEFINE make_dropdown.
selection-screen begin of line.
selection-screen comment 1(30) &4.
selection-screen position pos_low.
parameters: &1 as listbox visible length &2 default &3 obligatory.
selection-screen end of line.
END-OF-DEFINITION.

*-- Define subscreen for upload options
SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK file_options WITH FRAME.
make_parameter p_filein fil_desc rlgrap-filename '/filename.txt'.
make_radiobutton rb_unix unx_desc src.
make_radiobutton rb_local dos_desc src.
make_parameter p_filety typ_desc rlgrap-filetype 'DAT'.
SELECTION-SCREEN END OF BLOCK file_options.
SELECTION-SCREEN END OF SCREEN 1100.

*-- Define subscreen for BDC/CT Processing Options
SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK bdc_options WITH FRAME.
make_radiobutton rb_callt ctr_desc typ.
make_radiobutton rb_bdc bdc_desc typ.
make_dropdown p_mode(1) 30 'N' mod_desc.
make_dropdown p_uptyp(1) 30 'S' upd_desc.
SELECTION-SCREEN END OF BLOCK bdc_options.
SELECTION-SCREEN END OF SCREEN 1200.

*-- Define subscreen for Output Options
SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK output_opts WITH FRAME.
make_checkbox c_detail det_desc ' '.
make_checkbox c_error err_desc 'X'.
make_checkbox c_stats sta_desc 'X'.
SELECTION-SCREEN END OF BLOCK output_opts.
SELECTION-SCREEN END OF SCREEN 1300.

*-- Define Main Selection screen that will incorporate the subscreens
SELECTION-SCREEN BEGIN OF TABBED BLOCK tabs FOR 10 LINES.
SELECTION-SCREEN TAB (15) tabs1 USER-COMMAND ucomm1
DEFAULT SCREEN 1100.
SELECTION-SCREEN TAB (30) tabs2 USER-COMMAND ucomm2
DEFAULT SCREEN 1200.
SELECTION-SCREEN TAB (15) tabs3 USER-COMMAND ucomm3
DEFAULT SCREEN 1300.
SELECTION-SCREEN END OF BLOCK tabs.

*-- Fill the dropdown list boxes before displaying them
AT SELECTION-SCREEN OUTPUT.
PERFORM fill_dropdown_list USING 'P_MODE'.
PERFORM fill_dropdown_list USING 'P_UPTYP'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filein.
PERFORM choose_filename USING p_filein
CHANGING p_filein.

INITIALIZATION.
tabs1 = 'Upload Options'.
tabs2 = 'BDC/Call Transaction Options'.
tabs3 = 'Output Options'.
*-- Setup descriptions for Selection Screen items
err_desc = 'Show Errors (Call Transaction Only)'.
det_desc = 'Show details on records being processed'.
sta_desc = 'Show statistics on what has been processed'.
unx_desc = 'File is on App Server (unix)'.
dos_desc = 'File is on Presentation Server (pc)'.
typ_desc = 'File Type'..
fil_desc = 'Name of File'.
ctr_desc = 'Process in Call Transaction Mode'.
bdc_desc = 'Process in BDC Mode'.
mod_desc = 'Transaction Processing Mode'.
upd_desc = 'Update Type'.

START-OF-SELECTION.

*-- Open input file or Read data from database tables
END-OF-SELECTION.

*-- Loop at data, and create BDC/Call Transactions
*---------------------------------------------------------------------*
* FORM fill_dropdown_list *
*---------------------------------------------------------------------*
* Populate the dropdown list for the parameter provided *
*---------------------------------------------------------------------*
* --> VALUE(F_PARAMETER) *
*---------------------------------------------------------------------*

FORM fill_dropdown_list USING value(f_parameter).
TYPE-POOLS: vrm. " For parameter drop down lists

*-- Definitions for parameter drop down lists
DATA:
name TYPE vrm_id,
list TYPE vrm_values,
value LIKE LINE OF list.
name = f_parameter.

CASE f_parameter.
WHEN 'P_MODE'.
value-key = 'N'. value-text = 'Do not display any screens'.
APPEND value TO list.
value-key = 'A'. value-text = 'Display ALL screens'.
APPEND value TO list.
value-key = 'E'. value-text = 'Only display screens in error'.
APPEND value TO list.
WHEN 'P_UPTYP'.
value-key = 'S'. value-text = 'Update in Synchronous Mode'.
APPEND value TO list.
value-key = 'A'. value-text = 'Update in Asynchronous Mode'.
APPEND value TO list.
WHEN OTHERS.
ENDCASE.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list.
ENDFORM." fill_dropdown_list

*---------------------------------------------------------------------*
* FORM choose_filename *
*---------------------------------------------------------------------*
* Select a filename. Only provied if a local file is selected *
* as the source of the input file. A *
* custom function or routine could be *
* written to provide the same functionality *
* for unix. *
*---------------------------------------------------------------------*
FORM choose_filename USING f_filename_in
CHANGING f_filename_out.

DATA:
lc_fieldname LIKE dynpread-fieldname,
lc_fieldvalue LIKE dynpread-fieldvalue.

*-- Get the value of p_local
PERFORM read_value_from_screen USING sy-repid
sy-dynnr
'RB_LOCAL'
CHANGING lc_fieldname
lc_fieldvalue.
IF lc_fieldvalue = 'X'. " User chose a local file
PERFORM query_local_filename CHANGING f_filename_out.
ENDIF.

ENDFORM." get_filename

*---------------------------------------------------------------------*
* FORM READ_VALUE_FROM_SCREEN *
*---------------------------------------------------------------------*
FORM read_value_from_screen USING f_repid
f_dynnr
value(f_fieldname_in)
CHANGING f_fieldname_out
f_fieldvalue.

DATA: ltab_fields LIKE dynpread OCCURS 0 WITH HEADER LINE.
DATA: lc_dyname LIKE sy-repid.
DATA: lc_dynumb LIKE sy-dynnr.
DATA: lc_dummy(1) TYPE c.

*-- Read the screen to see if the user has entered a value for WERKS
ltab_fields-fieldname = f_fieldname_in.
APPEND ltab_fields.
lc_dyname = f_repid.
lc_dynumb = f_dynnr.

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = lc_dyname
dynumb = lc_dynumb
TABLES
dynpfields = ltab_fields
EXCEPTIONS
OTHERS = 01.
READ TABLE ltab_fields INDEX 1.

*-- Return the value from the screen
IF sy-subrc EQ 0.
SPLIT ltab_fields-fieldname AT '-'
INTO lc_dummy
f_fieldname_out.
f_fieldvalue = ltab_fields-fieldvalue.
ENDIF.
ENDFORM. "read_value_from_screen

*---------------------------------------------------------------------*
* FORM query_filename *
*---------------------------------------------------------------------*
FORM query_local_filename CHANGING f_filename_out LIKE rlgrap-filename.

DATA: l_filename LIKE rlgrap-filename.
DATA: l_mask(80) TYPE c.

* Build Filter
l_mask =
',All Files (*.*),*.*.'.

CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = f_filename_out
def_path = 'c:\'
mask = l_mask
* mode = O or S
title = 'Choose input file'
IMPORTING
filename = l_filename
EXCEPTIONS
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.
IF sy-subrc = 0.
f_filename_out = l_filename.
ENDIF.
ENDFORM. "query_local_filename



ALSO READ:

- Printing Selection Screen Data On The Report Output.

- Creating The Listbox Using Macros.

- Restrict Values For The F4 (Value On Request) Help.

- Screen Field Validation Using Chain Endchain.

- Drop Down List Box In The Selection Screen.

ABAP - F4 (Value On Request) On Logical File On selection Screen.

REPORT ztest_see.

DATA: BEGIN OF lt_dynpfields OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA: END OF lt_dynpfields.

DATA : i_mdate TYPE sy-datum.
DATA: w_filename TYPE string.
SELECT-OPTIONS: s_date FOR i_mdate.

PARAMETERS: p_file TYPE filename-fileintern,
p_lofile LIKE filename-fileintern.

PARAMETERS: p_rad1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND aaa,
p_rad2 RADIOBUTTON GROUP g1 .

AT SELECTION-SCREEN .

SELECT SINGLE fldate
INTO i_mdate
FROM sflight
WHERE carrid LIKE 'A%' AND
fldate IN s_date.

IF sy-subrc NE 0.
MESSAGE ' Enter the date in the format YYYY/MM/DD' TYPE 'E'.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

MOVE 'P_RAD1' TO lt_dynpfields-fieldname.
APPEND lt_dynpfields.
MOVE 'P_RAD2' TO lt_dynpfields-fieldname.
APPEND lt_dynpfields.
MOVE 'P_FILE' TO lt_dynpfields-fieldname.
APPEND lt_dynpfields.
MOVE 'P_LOFILE' TO lt_dynpfields-fieldname.
APPEND lt_dynpfields.

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpfields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10.
LOOP AT lt_dynpfields.
CASE lt_dynpfields-fieldname.

WHEN 'P_RAD1'.
p_rad1 = lt_dynpfields-fieldvalue.
WHEN 'P_RAD2'.
p_rad2 = lt_dynpfields-fieldvalue.
WHEN 'P_FILE'.
p_file = lt_dynpfields-fieldvalue.
WHEN 'P_LOFILE'.
p_file = lt_dynpfields-fieldvalue.
ENDCASE.
ENDLOOP.

IF p_rad1 EQ 'X'.
PERFORM get_local_file USING p_file.
ELSEIF p_rad2 EQ 'X'.
PERFORM get_appl_file USING p_lofile.
ENDIF.

*&---------------------------------------------------------------------*
*& Form get_local_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_FILE text
*----------------------------------------------------------------------*
FORM get_local_file USING p_p_file.

CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
client = sy-mandt
logical_filename = p_file
IMPORTING
file_name = w_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
ENDFORM. " get_local_file

*&---------------------------------------------------------------------*
*& Form get_appl_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_LOFILE text
*----------------------------------------------------------------------*
FORM get_appl_file USING p_p_lofile.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
client = sy-mandt
logical_filename = p_lofile
IMPORTING
file_name = w_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
ENDFORM. " get_appl_file


ALSO READ:

- Display Icon On Selection Screen.

- Sample Program To Display Icon On Selection Screen.

- Multiple Selection Screen Options.

- Pop Up Window With Check Box.

- F4 (Value On Request) For Parameter On Selection Screen.