Den FuBa hab ich mir grad mal angesehen. Mir ist allerdings nicht wirklich klar, was ich bei den Import-Parametern unternewx hat geschrieben: Zur Eingabe von Werten gibt es einen Funktionsbaustein, dem man Felder bestimmten Typs mitgeben kann und deren Werte auf Wunsch gegen die Prüftabelle geprüft werden (POPUP*TO*DB_CHECKED* oder so ähnlich [POPUP_GET_VALUES_DB_CHECKED])
eintragen muss?!tables
fields =
Code: Alles auswählen.
report z_report.
* TYPES --------------------------------------------------------- *
types: begin of i_eqnra,
equnr like equi-equnr,
end of i_eqnra.
types: begin of i_eqnrz,
equnr like equi-equnr,
objnr like jest-objnr,
eqnrz type i,
end of i_eqnrz.
* TYPE POOLS ---------------------------------------------------- *
type-pools: slis.
include <icon>.
* TABLES -------------------------------------------------------- *
tables: equi,
equz, "Equipment Zeitsegment
makt, "Materialkurztext
ausp, "Ausprägungswerte der Sachmerkmale
cabnt, "Texte für Merkmale
cawn, "Texte für Werte
objk, "Objektliste Instandhaltung
bgmkobj,
z003, "ALV Header
z004. "ALV Item
* INTERNE TABELLEN ---------------------------------------------- *
data: i_equi like standard table of equi with header line,
i_equz like standard table of equz with header line,
i_makt like standard table of makt with header line,
i_ausp like standard table of ausp with header line,
i_cabn like standard table of cabn with header line,
i_cabnt like standard table of cabnt with header line,
i_objk like standard table of objk with header line,
i_bgmkobj like standard table of bgmkobj with header line.
data: header like standard table of z003 with header line,
item type standard table of z004 with header line.
data: i_eqnra type hashed table of i_eqnra with unique key equnr
with header line.
*DATA: i_eqnrz TYPE HASHED TABLE OF i_eqnrz WITH UNIQUE KEY equnr objnr
* WITH HEADER LINE.
data: i_eqnrz type standard table of i_eqnrz with header line.
data: i_veqnr like equi-equnr.
data: sel_equnr like header."enthält nur die Equnr der ausgewählt. Zeile
data: bdcdata like bdcdata occurs 0 with header line.
* STRUKTUREN ---------------------------------------------------- *
data: fieldcat type slis_t_fieldcat_alv,
layout type slis_layout_alv,
keyinfo type slis_keyinfo_alv,
events type slis_t_event.
* KONSTANTEN ---------------------------------------------------- *
constants: top_of_page type slis_formname value 'TOP_OF_PAGE'.
* HILFSFELDER --------------------------------------------------- *
data: g_repid like sy-repid,
g_count like sy-tfill,
g_eqnrz type i.
data: rep_eqnr. "Für Rep-Icon
*******************************************************************
* SELECTION-SCREEN
*******************************************************************
* Info-Block ---------------------------------------------------- *
selection-screen begin of block info
with frame title text-001.
selection-screen skip 2.
selection-screen comment 1(79) text-002.
selection-screen skip.
selection-screen end of block info.
* Selektions Block ---------------------------------------------- *
selection-screen begin of block selection
with frame title text-003.
selection-screen skip.
select-options: p_atwrt for ausp-atwrt visible length 18 no intervals.
select-options: p_equnr for equi-equnr memory id pqn visible length 18
no intervals.
selection-screen skip.
selection-screen end of block selection.
*******************************************************************
* INITIALIZATION
*******************************************************************
initialization.
*******************************************************************
* START-OF-SELECTION
*******************************************************************
start-of-selection.
* Fehlermeldung, wenn Selektion nicht eingeschränkt wurde ------------ *
if p_equnr[] is initial and
p_atwrt[] is initial.
message s009.
exit.
endif.
* Equipmentdaten lesen ----------------------------------------------- *
perform read_equi.
* Materialbezeichnung lesen ------------------------------------------ *
perform read_makt.
* Mustergarantie - Objekt Zuordnung für Gewährleistungsdatum lesen --- *
perform read_bgmkobj.
* Merkmale selbst lesen ---------------------------------------------- *
perform read_ausp.
* Merkmalseigenschaften lesen ---------------------------------------- *
perform read_cabn.
* Merkmalsbezeichnung lesen ------------------------------------------ *
perform read_cabnt.
************************************************************************
* END-OF-SELECTION
************************************************************************
end-of-selection.
* Ausgabe auf Bildschirm --------------------------------------------- *
perform ausgabe_screen.
************************************************************************
* UNTERPROGRAMME
************************************************************************
*&---------------------------------------------------------------------*
*& Form READ_EQUI
*&---------------------------------------------------------------------*
form read_equi.
* Initialisieren -----------------------------------------------------
*
clear: i_equi,
i_eqnrz,
g_eqnrz.
refresh: i_equi,
i_eqnrz.
perform sel_gruppe_1. "Material, Equipment
perform sel_gruppe_2. "Merkmal, Merkmalwert
perform read_equi_n.
perform read_equz.
* Objektliste Instandhaltung lesen für selektierte Equipments
perform read_objk.
endform. " READ_EQUI
*&---------------------------------------------------------------------*
*& Form READ_MAKT
*&---------------------------------------------------------------------*
form read_makt.
check not i_equi[] is initial.
* Deklarationen ------------------------------------------------------ *
data: begin of i_matnr occurs 0,
matnr like mara-matnr,
end of i_matnr.
* Initialisieren ----------------------------------------------------- *
clear: i_makt,
i_matnr.
refresh: i_makt,
i_matnr.
* Matnr extrahieren -------------------------------------------------- *
loop at i_equi.
move i_equi-matnr to i_matnr-matnr.
collect i_matnr.
endloop.
check not i_matnr[] is initial.
* MAKT lesen --------------------------------------------------------- *
select * into table i_makt
from makt
for all entries in i_matnr
where matnr = i_matnr-matnr
and spras = sy-langu.
sort i_makt by matnr.
endform. " READ_MAKT
*&---------------------------------------------------------------------*
*& Form READ_AUSP
*&---------------------------------------------------------------------*
form read_ausp.
check not i_equi[] is initial.
* Deklarationen ------------------------------------------------------ *
data: begin of i_objek occurs 0,
objek like kssk-objek,
end of i_objek.
* Initialisieren ----------------------------------------------------- *
clear: i_ausp,
i_objek.
refresh: i_ausp,
i_objek.
* Objektnummer = Equipmentnummern -> extrahieren --------------------- *
loop at i_equi.
move i_equi-equnr to i_objek-objek.
append i_objek.
endloop.
g_count = sy-tfill.
* AUSP lesen ---------------------------------------------------------
select * into table i_ausp
from ausp
for all entries in i_objek
where objek = i_objek-objek
* AND atzhl = '001'
and mafid = 'O'
and klart = '002'
and adzhl = '000'.
sort i_ausp by objek
atinn.
endform. " READ_AUSP
*&---------------------------------------------------------------------*
*& Form READ_CABNT
*&---------------------------------------------------------------------*
form read_cabnt.
check not i_ausp[] is initial.
* Deklarationen ------------------------------------------------------ *
data: begin of i_atinn occurs 0,
atinn like ausp-atinn,
end of i_atinn.
* Initialisieren ----------------------------------------------------- *
clear: i_cabnt,
i_atinn.
refresh: i_cabnt,
i_atinn.
clear: i_cabnt-atbez.
* Interne Merkmalsnummern extrahieren -------------------------------- *
loop at i_ausp.
move i_ausp-atinn to i_atinn-atinn.
collect i_atinn.
endloop.
check not i_atinn[] is initial.
* CABNT lesen -------------------------------------------------------- *
select * into table i_cabnt
from cabnt
for all entries in i_atinn
where atinn = i_atinn-atinn
and spras = sy-langu.
sort i_cabnt by atinn.
endform. " READ_CABNT
*&---------------------------------------------------------------------*
*& Form AUSGABE_SCREEN
*&---------------------------------------------------------------------*
form ausgabe_screen.
* Headertabelle (Serialnummern) füllen ------------------------------- *
perform fill_header.
* Itemtabelle (Merkmale) füllen -------------------------------------- *
perform fill_item.
* ALV-Ausgabe -------------------------------------------------------- *
perform alv_ausgabe.
endform. " AUSGABE_SCREEN
*&---------------------------------------------------------------------*
*& Form FILL_HEADER
*&---------------------------------------------------------------------*
form fill_header.
check not i_equi[] is initial.
* Initialisieren ----------------------------------------------------- *
clear: header.
refresh: header.
* Anzahl Sätze einfügen
if sy-langu = 'D'.
header-matnr = 'Anzahl Sätze:'.
else.
header-matnr = 'Data Records:'.
endif.
header-equnr = g_count.
append header.
* HEADER-Tabelle füllen ---------------------------------------------- *
loop at i_equi.
* ITABs lesen
clear i_makt.
clear i_bgmkobj.
clear i_eqnrz.
clear rep_eqnr.
clear header-reps.
read table i_makt with key matnr = i_equi-matnr
binary search.
read table i_eqnrz with key equnr = i_equi-equnr
binary search.
read table i_bgmkobj with key j_objnr = i_eqnrz-objnr
binary search.
move: i_equi-matnr to header-matnr,
i_equi-equnr to header-equnr,
i_makt-maktx to header-maktx,
i_bgmkobj-gwldt to header-gwldt.
select single equnr from viqmfel
into rep_eqnr
where equnr = i_equi-equnr.
if not rep_eqnr is initial.
move icon_working_plan to header-reps.
endif.
append header.
endloop.
endform. " FILL_HEADER
*&---------------------------------------------------------------------*
*& Form FILL_ITEM
*&---------------------------------------------------------------------*
form fill_item.
check not i_equi[] is initial.
* Deklarationen ------------------------------------------------------ *
data: l_objek like ausp-objek,
l_typed type d,
l_typep type p decimals 0,
l_typec(8) type c.
* Initialisieren ----------------------------------------------------- *
clear: item.
refresh: item.
* ITEM-Tabelle füllen ------------------------------------------------ *
loop at i_equi.
* Initialisieren
clear: item,
l_objek.
move i_equi-equnr to l_objek.
* Merkmale lesen
loop at i_ausp where objek = l_objek.
* ITABs lesen
read table i_cabn with key atinn = i_ausp-atinn
binary search.
read table i_cabnt with key atinn = i_ausp-atinn
binary search.
* ITEM füllen
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_cabnt-atbez to item-atbez,
i_ausp-atwrt to item-atwrt.
clear item-atwrt_edit.
if item-atbez = 'KUNDE' or item-atbez = 'CUSTOMER'.
move icon_change to item-atwrt_edit.
endif.
if item-atwrt is initial.
if i_cabn-atfor = 'DATE'.
move i_ausp-atflv to l_typep.
write l_typep to l_typec left-justified.
write l_typec to l_typed.
call function 'CONVERT_DATE_TO_EXTERNAL'
exporting
date_internal = l_typed
importing
date_external = item-atwrt
exceptions
date_internal_is_invalid = 1
others = 2.
else.
move i_ausp-atflv to l_typep.
write l_typep to item-atwrt left-justified no-zero.
endif.
endif.
append item.
endloop.
endloop.
endform. " FILL_ITEM
*&---------------------------------------------------------------------*
*& Form ALV_AUSGABE
*&---------------------------------------------------------------------*
form alv_ausgabe.
g_repid = sy-repid.
* Verbindung von HEADER und ITEM definieren -------------------------- *
perform define_keyinfo.
* Feldkatalog aufbauen ----------------------------------------------- *
perform fieldcat_init using fieldcat[].
* Layout definieren -------------------------------------------------- *
perform define_layout using layout.
* ALV-Listviewer aufrufen -------------------------------------------- *
perform alv_list_display.
endform. " ALV_AUSGABE
*&---------------------------------------------------------------------*
*& Form define_keyinfo
*&---------------------------------------------------------------------*
form define_keyinfo.
* Initialisieren ----------------------------------------------------- *
clear keyinfo.
keyinfo-header01 = 'MATNR'.
keyinfo-item01 = 'MATNR'.
keyinfo-header02 = 'EQUNR'.
keyinfo-item02 = 'EQUNR'.
endform. " define_keyinfo
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
form fieldcat_init using fieldcat type slis_t_fieldcat_alv.
data: l_fieldcat type slis_fieldcat_alv.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = g_repid
i_internal_tabname = 'HEADER'
i_structure_name = 'Z003'
changing
ct_fieldcat = fieldcat[].
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = g_repid
i_internal_tabname = 'ITEM'
i_structure_name = 'Z004'
changing
ct_fieldcat = fieldcat[].
loop at fieldcat into l_fieldcat.
if l_fieldcat-fieldname = 'EXPAND' and
l_fieldcat-tabname = 'HEADER'.
delete fieldcat.
endif.
if l_fieldcat-fieldname = 'MATNR' and
l_fieldcat-tabname = 'ITEM'.
delete fieldcat.
endif.
if l_fieldcat-fieldname = 'EQUNR' and
l_fieldcat-tabname = 'ITEM'.
delete fieldcat.
endif.
if l_fieldcat-fieldname = 'SERNR' and
l_fieldcat-tabname = 'ITEM'.
delete fieldcat.
endif.
if l_fieldcat-fieldname = 'ATWRT' and
l_fieldcat-tabname = 'ITEM'.
l_fieldcat-ddictxt = 'M'.
if sy-langu = 'D'.
l_fieldcat-seltext_m = 'Merkmalwert'.
else.
l_fieldcat-seltext_m = 'Characteristic value'.
endif.
modify fieldcat from l_fieldcat.
endif.
field-symbols: <ls_fcat> like line of fieldcat.
read table fieldcat
assigning <ls_fcat>
with key fieldname = 'REPS'.
if sy-subrc eq 0.
move 'X' to <ls_fcat>-icon.
move 'X' to <ls_fcat>-hotspot.
endif.
read table fieldcat
assigning <ls_fcat>
with key fieldname = 'ATWRT_EDIT'.
if sy-subrc eq 0.
move 'X' to <ls_fcat>-icon.
move 'X' to <ls_fcat>-hotspot.
endif.
endloop.
endform. " FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
form alv_list_display.
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = g_repid
* i_callback_pf_status_set = ' '
i_callback_user_command = 'USER_COMMAND'
is_layout = layout
it_fieldcat = fieldcat[]
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
i_tabname_header = 'HEADER'
i_tabname_item = 'ITEM'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = keyinfo
* IS_PRINT =
tables
t_outtab_header = header
t_outtab_item = item
exceptions
program_error = 1
others = 2
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
*& Form DEFINE_LAYOUT
*&---------------------------------------------------------------------*
form define_layout using layout type slis_layout_alv.
* Initialisieren ----------------------------------------------------- *
clear: layout.
* LAYOUT füllen ------------------------------------------------------ *
layout-zebra = 'X'.
layout-colwidth_optimize = space.
layout-expand_fieldname = 'EXPAND'.
layout-no_colhead = space.
layout-detail_popup = 'X'.
endform. " DEFINE_LAYOUT
*&---------------------------------------------------------------------*
*& Form READ_CABN
*&---------------------------------------------------------------------*
form read_cabn.
check not i_ausp[] is initial.
* Deklarationen ------------------------------------------------------ *
data: begin of i_atinn occurs 0,
atinn like ausp-atinn,
end of i_atinn.
* Initialisieren ----------------------------------------------------- *
clear: i_cabn,
i_atinn.
refresh: i_cabn,
i_atinn.
* Interne Merkmalsnummern extrahieren -------------------------------- *
loop at i_ausp.
move i_ausp-atinn to i_atinn-atinn.
collect i_atinn.
endloop.
check not i_atinn[] is initial.
* CABNT lesen -------------------------------------------------------- *
select * into table i_cabn
from cabn
for all entries in i_atinn
where atinn = i_atinn-atinn.
sort i_cabn by atinn.
endform. " READ_CABN
*&---------------------------------------------------------------------*
*& Form ANHANG_EQUZ
*&---------------------------------------------------------------------*
form anhang_equz.
read table i_equz with key hequi = i_equi-equnr.
if sy-subrc = 0 or sy-subrc = 2.
clear: item-atbez, item-atwrt.
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_equi-sernr to item-sernr,
'- - - - - - - - - - - - - - -' to item-atbez,
'- - - - - - - - - - - - - - -' to item-atwrt.
append item.
clear: item-atbez, item-atwrt.
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_equi-sernr to item-sernr,
'Unterequipments:' to item-atbez.
append item.
loop at i_equz where hequi = i_equi-equnr.
* ITEM füllen
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_equi-sernr to item-sernr.
write i_equz-equnr to item-atbez right-justified no-zero.
write i_equz-submt to item-atwrt left-justified.
append item.
endloop.
clear: item-atbez, item-atwrt.
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_equi-sernr to item-sernr,
'- - - - - - - - - - - - - - -' to item-atbez,
'- - - - - - - - - - - - - - -' to item-atwrt.
append item.
endif.
endform. " ANHANG_EQUZ
*&---------------------------------------------------------------------*
*& Form READ_OBJK
*&---------------------------------------------------------------------*
form read_objk.
check not i_equi[] is initial.
* Initialisieren -----------------------------------------------------
*
clear: i_objk.
refresh: i_objk.
* OBJK lesen ---------------------------------------------------------
*
select * into table i_objk
from objk
for all entries in i_equi
where equnr = i_equi-equnr.
sort i_objk by obknr.
endform. " READ_OBJK
*&---------------------------------------------------------------------
*
*& Form ANHANG_MATSTDAT
*&---------------------------------------------------------------------
*
form anhang_matstdat.
* Materialstammdaten aus Materialkurztext lesen
clear: i_makt.
check not i_makt[] is initial.
read table i_makt with key matnr = i_equi-matnr
spras = 'a'
binary search.
check not i_makt is initial.
* ITEM füllen
clear item.
move: i_equi-matnr to item-matnr,
i_equi-equnr to item-equnr,
i_equi-sernr to item-sernr,
'Gerätetyp:' to item-atbez.
write: i_makt-maktx to item-atwrt.
append item.
endform. "ANHANG_MATSTDAT
*&---------------------------------------------------------------------
*& Form SEL_GRUPPE_1
*&---------------------------------------------------------------------
*
form sel_gruppe_1.
if p_equnr[] is initial.
else.
select equnr objnr
into i_eqnrz
from equi
where equnr in p_equnr.
i_eqnrz-eqnrz = 1.
collect i_eqnrz.
endselect.
sort i_eqnrz by equnr.
g_eqnrz = g_eqnrz + 1.
endif.
endform. " SEL_GRUPPE_1
*
**&---------------------------------------------------------------------
**
**& Form SEL_GRUPPE_2
**&---------------------------------------------------------------------
**
form sel_gruppe_2.
if p_atwrt[] is initial.
else.
clear: i_veqnr,
i_eqnra.
refresh: i_eqnra.
if ( p_atwrt-option = 'EQ' and
p_atwrt-low is initial ) or
( p_atwrt-option = 'GE' and
p_atwrt-low is initial ).
write 'Achtung! Ergebnis eventuell falsch.'.
endif.
select objek
into i_eqnra
from ausp
where atwrt in p_atwrt
and atinn = '0000001015' "(PRD = ..1050)
and mafid = 'O'
and klart = '002'
and adzhl = '000'.
collect i_eqnra.
endselect.
sort i_eqnra by equnr.
loop at i_eqnra.
i_eqnrz-equnr = i_eqnra-equnr.
concatenate 'IE' i_eqnrz-equnr into i_eqnrz-objnr.
i_eqnrz-eqnrz = 1.
if i_eqnrz-equnr = i_veqnr.
else.
collect i_eqnrz.
i_veqnr = i_eqnrz-equnr.
endif.
endloop.
sort i_eqnrz by equnr.
g_eqnrz = g_eqnrz + 1.
endif.
endform. " SEL_GRUPPE_2
*
**&---------------------------------------------------------------------
**
**& Form READ_EQUI_N
**&---------------------------------------------------------------------
*
form read_equi_n.
* EQUI lesen ---------------------------------------------------------
*
sort i_eqnrz by eqnrz descending equnr.
loop at i_eqnrz.
if i_eqnrz-eqnrz < g_eqnrz.
exit.
endif.
select single * into i_equi
from equi
where equnr = i_eqnrz-equnr.
append i_equi.
endloop.
sort i_equi by equnr.
endform. " READ_EQUI_N
*&---------------------------------------------------------------------*
*& Form READ_EQUZ
*&---------------------------------------------------------------------*
form read_equz.
* EQUZ lesen --------------------------------------------------------- *
check not i_equi[] is initial.
select * into table i_equz
from equz
for all entries in i_equi
where hequi = i_equi-equnr.
sort i_equz by hequi equnr.
endform. " READ_EQUZ
*&---------------------------------------------------------------------*
*& Form read_obj
*&---------------------------------------------------------------------*
form read_bgmkobj.
clear i_bgmkobj.
refresh i_bgmkobj.
* BGMKOBJ lesen ------------------------------------------------------
sort i_eqnrz by eqnrz descending equnr.
select * into table i_bgmkobj
from bgmkobj
for all entries in i_eqnrz
where j_objnr = i_eqnrz-objnr.
endform. " read_BGMKOBJ
*&---------------------------------------------------------------------*
* Auf Kommandos aus ALV reagieren
*----------------------------------------------------------------------*
form user_command using l_p_ucomm like sy-ucomm
l_p_selfield type slis_selfield.
check not l_p_selfield-value is initial.
read table header into sel_equnr index l_p_selfield-tabindex.
if l_p_ucomm eq '&IC1'.
case l_p_selfield-sel_tab_field.
when 'HEADER-REPS'. " Hotspot auf Rep-Icon
perform bdc_action.
call transaction 'IW69' using bdcdata
* MODE 'N' "keine Anzeige
mode 'E' "Anzeige bei Fehler
* UPDATE 'S'
* MESSAGES INTO t_messages
.
when 'ITEM-ATWRT_EDIT'.
* HIER
* Inputbox anzeigen und Wert für ATBEZ "KUNDE" vorblenden
* nach OK in der Inputbox Wert für ATBEZ "KUNDE" setzen
message i010.
* Ausgabe wurde erfolgreich durchgeführt.
endcase.
endif.
endform. "user_command
*&---------------------------------------------------------------------
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------
*
form bdc_dynpro using par_dyn1 par_dyn2.
clear bdcdata.
bdcdata-program = par_dyn1.
bdcdata-dynpro = par_dyn2.
bdcdata-dynbegin = 'X'.
append bdcdata.
clear bdcdata.
endform. "bdc_dynpro
*&---------------------------------------------------------------------
*& Form BDC_FIELD
*&---------------------------------------------------------------------
*
form bdc_field using par1 par2.
bdcdata-fnam = par1.
bdcdata-fval = par2.
append bdcdata.
endform. "bdc_field
*&---------------------------------------------------------------------
*& Form BDC_ACTION
*&---------------------------------------------------------------------
*
form bdc_action.
clear bdcdata.
refresh bdcdata.
perform bdc_dynpro using 'RIQMEL40' '1000'.
perform bdc_field using 'BDC_OKCODE' '/EGET'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_CURSOR' '04/04'.
perform bdc_field using 'BDC_OKCODE' '=PICK'.
perform bdc_dynpro using 'RIQMEL40' '1000'.
perform bdc_field using 'BDC_CURSOR' 'EQUNR-LOW'.
perform bdc_field using 'BDC_OKCODE' '=ONLI'.
perform bdc_field using 'EQUNR-LOW' sel_equnr-equnr.
endform. "bdc_action