Code: Alles auswählen.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* ddic_structure = '/xxxx/txmlid'
retfield = 'XMLID'
* PVALKEY = ' '
dynpprog = lf_sycprog
dynpnr = lf_sydynnr
dynprofield = 'xmlid'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
TABLES
value_tab = gt_id
* field_tab = lt_dfies
return_tab = lt_ret_tab.
Code: Alles auswählen.
TYPES:
BEGIN OF typ_s_id,
xmlid TYPE /xxxx/xmlid,
typ(80) TYPE c,
END OF typ_s_id,
typ_t_id TYPE TABLE OF typ_s_id.
Code: Alles auswählen.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = '/xxxx/txmlid'
* FIELDNAME = ' '
* LANGU = SY-LANGU
* LFIELDNAME = ' '
all_types = 'X'
* IMPORTING
* X030L_WA =
* DDOBJTYPE =
* DFIES_WA =
* LINES_DESCR =
TABLES
dfies_tab = lt_dfies.
Code: Alles auswählen.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'TANUM'
window_title = 'Picking lists'(034)
value_org = 'S'
tables
value_tab = ltab_ltak[]
return_tab = ltab_retvalues[]
exceptions
parameter_error = 1
no_values_found = 2
others = 99.
Code: Alles auswählen.
MODULE create_f4 INPUT.
* Eigene Datenstruktur
* TYPES: BEGIN OF ls_line,
* xmlid TYPE /xxxx/xmlid,
* typ TYPE /xxxx/typ,
* END OF ls_line.
TYPES:
BEGIN OF typ_s_id,
xmlid TYPE /xxxx/xmlid,
typ(80) TYPE c,
END OF typ_s_id,
typ_t_id TYPE TABLE OF typ_s_id.
DATA:
gt_id TYPE typ_t_id,
gs_id TYPE typ_s_id.
* DATA: lt_tab TYPE STANDARD TABLE OF ls_line.
DATA: lt_ret_tab TYPE STANDARD TABLE OF ddshretval,
ls_ret_tab LIKE LINE OF lt_ret_tab.
DATA: lt_test TYPE TABLE OF dynpread,
ls_test LIKE LINE OF lt_test.
DATA: lf_sycprog LIKE sy-cprog,
lf_sydynnr LIKE sy-dynnr.
* Tabelle mit exclude Werten säubern
CLEAR gt_seltab.
* sy-cprog funktioniert hier nicht. Liegt wohl daran, da es ein FuBa ist.
lf_sycprog = '/XXXX/SAPLVISG'. "sy-cprog.
lf_sydynnr = sy-dynnr.
* Hier werden die Werte, die schon auf dem Pflege-View Bild angezeigt werden
* ausgelesen und in die Tabelle lt_test geschrieben.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = lf_sycprog
dynumb = lf_sydynnr
translate_to_upper = 'X'
request = 'A'
* PERFORM_CONVERSION_EXITS = ' '
* PERFORM_INPUT_CONVERSION = ' '
* determine_loop_index = 'X'
TABLES
dynpfields = lt_test
EXCEPTIONS
invalid_dynprofield = 2
OTHERS = 11
.
IF sy-subrc = 2.
* MESSAGE s000 WITH 'Dynprofeld nicht vorhanden.'.
EXIT.
ELSEIF sy-subrc <> 0.
MESSAGE x000 WITH 'Nicht nachvollziehbarer Fehler.'.
ENDIF.
* Auslesen von lt_test, um schon vorhandene Werte auf dem Bildschirm in eine Range-Tabelle
* zu schreiben, damit diese Werte später aus der Wertehilfe-Tabelle entfernt werden können
LOOP AT lt_test INTO ls_test.
IF ls_test-fieldname = '/XXXX/VMAKP-XMLID' OR ls_test-fieldname = '/XXXX/VMAPO-XMLID'.
IF NOT ls_test-fieldvalue IS INITIAL.
MOVE 'E' TO gs_seltab-sign.
MOVE 'EQ' TO gs_seltab-option.
MOVE ls_test-fieldvalue TO gs_seltab-low.
APPEND gs_seltab TO gt_seltab.
ENDIF.
ENDIF.
ENDLOOP.
* FuBa um aus einem XML-File die ID-Kennungen zu bekommen
CALL FUNCTION '/XXXX/VISX_GET_XMLIDS'
EXPORTING
if_xmltyp = 'hawa'
IMPORTING
et_id = gt_id.
* Wertehilfe-Tabelle anpassen (löschen der schon vorhandenen Werte auf dem Pflegebildschirm)
LOOP AT gt_seltab INTO gs_seltab.
READ TABLE gt_id WITH KEY gs_seltab-low INTO gs_id.
IF sy-subrc = 0.
DELETE TABLE gt_id FROM gs_id.
ENDIF.
ENDLOOP.
* FuBa um die 'Beschreibung' einer Tabelle zu bekommen (funktioniert hier irgendwie nicht)
DATA: lt_dfies TYPE TABLE OF dfies,
ls_dfies TYPE dfies.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = '/xxxx/txmlid'
* FIELDNAME = ' '
* LANGU = SY-LANGU
* LFIELDNAME = ' '
all_types = 'X'
* GROUP_NAMES = ' '
* UCLEN =
IMPORTING
* X030L_WA =
* DDOBJTYPE =
dfies_wa = ls_dfies
* LINES_DESCR =
TABLES
dfies_tab = lt_dfies
* FIXED_VALUES =
* EXCEPTIONS
* NOT_FOUND = 1
* INTERNAL_ERROR = 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.
* Anzeige der F4-Wertehilfe
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* ddic_structure = '/xxxx/txmlid'
retfield = 'XMLID'
* PVALKEY = ' '
dynpprog = lf_sycprog
dynpnr = lf_sydynnr
dynprofield = 'xmlid'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
TABLES
value_tab = gt_id
* field_tab = lt_dfies
return_tab = lt_ret_tab.
ENDMODULE. " create_f4 INPUTCode: Alles auswählen.
PROCESS ON VALUE-REQUEST.
FIELD gs_mcdon-mcdonpr MODULE create_f4_wertehilfe.Code: Alles auswählen.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MCDONPR'
dynpprog = lf_sycprog
dynpnr = lf_sydynnr
dynprofield = 'mcdonpr'
value_org = 'S'
TABLES
value_tab = lt_mcdon_tab
return_tab = lt_ret_tab.
Code: Alles auswählen.
DATA: lt_dynpfld TYPE STANDARD TABLE OF dselc,
lf_dynpfld TYPE dselc.
DATA: BEGIN OF lf_values,
tabname TYPE z_frmf-tabname,
fieldname TYPE z_frmf-fieldname,
END OF lf_values.
DATA: lt_values LIKE STANDARD TABLE OF lf_values.
lf_dynpfld-fldname = 'F0001'.
lf_dynpfld-dyfldname = 'Z_FRMF-TABNAME'.
APPEND lf_dynpfld TO lt_dynpfld.
lf_dynpfld-fldname = 'F0002'.
lf_dynpfld-dyfldname = 'Z_FRMF-FIELDNAME'.
APPEND lf_dynpfld TO lt_dynpfld.
SELECT tabname fieldname FROM z_result
INTO CORRESPONDING FIELDS OF TABLE lt_values
WHERE project = z_frmf-project
AND tproject = z_frmf-tproject
AND load_cust = gc_false.
* Tabelle für F4-Hilfe ausgeben
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
dynpprog = l_repid
dynpnr = l_dynnr
dynprofield = 'Z_FRMF-FIELDNAME'
value_org = 'S'
TABLES
value_tab = lt_values
dynpfld_mapping = lt_dynpfld
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
Code: Alles auswählen.
IF VALUE_ORG = 'S' AND
DDIC_STRUCTURE IS INITIAL AND
FIELD_TAB[] IS INITIAL.
PERFORM GET_FIELDS_OF_VALUE_TAB
TABLES VALUE_TAB FIELD_TAB
CHANGING RETFIELD.
ENDIF. Code: Alles auswählen.
Hier auf dem 620er System:
TYPES:
BEGIN OF typ_s_id,
xmlid TYPE /xxxx/xmlid,
typ TYPE char80s,
END OF typ_s_id.
DATA:
gt_id TYPE STANDARD TABLE OF typ_s_id,
gs_id TYPE typ_s_id.
Hier auf dem 4.6c System:
TYPES:
BEGIN OF ls_mcd_line,
mcdonpr TYPE /xxxx/mcdonpr,
mcdontx TYPE char80s,
END OF ls_mcd_line.
DATA:
lt_mcdon_tab TYPE STANDARD TABLE OF ls_mcd_line.
Code: Alles auswählen.
DESCRIBE FIELD VALUE_TAB HELP-ID HLP.
DO.
I = SY-INDEX.
ASSIGN COMPONENT I OF STRUCTURE VALUE_TAB TO <F>.
IF SY-SUBRC <> 0 . EXIT. ENDIF.
DESCRIBE FIELD <F> HELP-ID HLP.
SPLIT HLP AT '-' INTO TABNAME LFIELDNAME.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
TABNAME = TABNAME
LFIELDNAME = LFIELDNAME
ALL_TYPES = 'X'
IMPORTING
X030L_WA =
DDOBJTYPE =
DFIES_WA = DFIES_ZWI
TABLES
DFIES_TAB = DFIES_ZWI
EXCEPTIONS
NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.
CHECK SY-SUBRC = 0.
DESCRIBE DISTANCE BETWEEN VALUE_TAB AND <F> INTO DFIES_ZWI-OFFSET.
CLEAR DFIES_ZWI-TABNAME.
N = I.
CONCATENATE 'F' N INTO DFIES_ZWI-FIELDNAME.
dfies_zwi-mask+2(1) = 'X'.