Code: Alles auswählen.
TYPES: BEGIN OF ts_values,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF ts_values.
data: gv_lifnr type lfa1-lifnr,
gv_kunnr type kna1-kunnr.
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values,
gt_values TYPE TABLE OF ts_values.
MODULE init OUTPUT.
progname = sy-repid.
dynnum = sy-dynnr.
CLEAR: field_value, dynpro_values.
field_value-fieldname = 'GV_LIFNR'.
APPEND field_value TO dynpro_values.
CLEAR: field_value, dynpro_values.
field_value-fieldname = 'GV_KUNNR'.
APPEND field_value TO dynpro_values.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE value_carrier INPUT.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'LFA1'
fieldname = 'LIFNR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'GV_LIFNR'.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'KNA1'
fieldname = 'KUNNR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'GV_KUNNR'.
ENDMODULE.
MODULE value_connection INPUT.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = progname
dynumb = dynnum
translate_to_upper = 'X'
TABLES
dynpfields = dynpro_values.
field_value = dynpro_values[ 1 ].
SELECT lifnr
FROM lfa1
INTO CORRESPONDING FIELDS OF TABLE gt_lfa1
WHERE lifnr = gv_lifnr.
SELECT kunnr
FROM kfa1
INTO CORRESPONDING FIELDS OF TABLE gt_kfa1
WHERE kunnr = gv_kunnr.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFNR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'GV_LIFNR'
value_org = 'S'
TABLES
value_tab = values_tab.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KUNNR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'GV_KUNNR'
value_org = 'S'
TABLES
value_tab = values_tab.
ENDMODULE.
process before output.
module status_8000.
module init.
process after input.
module user_command_8000.
process on value-request.
field gv_lifnr module value_carrier.
field gv_lifnr module value_connection.
field gv_kunnr module value_carrier.
field gv_kunnr module value_connection.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ManMan
Code: Alles auswählen.
form save_data.
select single lifnr name1 into (tablex-lifnr, linam)
from lfa1 where lifnr = lifnr.
if sy-subrc = 4.
select single lifnr name1 into (tablex-lifnr, linam)
from kna1 where kunnr = lifnr.
if sy-subrc = 4.
fehler
endif.
endif.
select single lifnr name1 into (tablex-lifnr, kunam)
from lfa1 where lifnr = kunnr.
if sy-subrc = 4.
select single lifnr name1 into (tablex-lifnr, kunam)
from kna1 where kunnr = kunnr.
if sy-subrc = 4
fehler
endif.
endif.
select single * from tablex where lifnr = lifnr.
if sy-subrc = 4.
tablex -lifnr = lifnr.
tablex -linam = linam.
tablex -kunnr = kunnr.
tablex -Kunam = kunam.
modify tablex.
else.
fehler
endif.
endform.
MODULE zuser_command_8000 INPUT.
case sy-ucomm."ok_code.
when 'SAVE'.
if lifnr is not initial.
perform save_data.
else.
Geben Sie Daten ein!
endif.
when 'CANCEL'.
....
ENDMODULE.
class lcl_handle_events implementation.
method on_user_command.
case e_salv_function.
when 'SAVE'.
perform save_data.
endmethod.
endclass.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ManMan
Der Begriff "Matchcode" stammt eigentlich noch aus Release 3.x. Heutzutage spricht man von "Suchhilfen", aber in unseren Kreisen ist "Matchcode" noch verbreitet, und im ABAP findet sich der Begriff auch noch. Lies Dir mal die ABAP-F1-Hilfe zu dem Befehlwas ist ein Matchcode
Da finde ich es zunächst einmal erstaunlich, dass das auf "dem Selection-Screen" funktionieren soll. Wenn Du bei einem Report auf dem Selektionsbild den Speichern-Knopf (oder F11) drückst, dann geht ein Dialog auf, der Dir anbietet, die derzeite Ausfüllung des Selektionsbildes als Variante zu speichern.Und ich habe noch eine Frage, kannst Du mir bitte noch weiter helfen. Auf dem Dynpro habe ich auch einen Speichern-Button. Die Logik ist folgende: auf dem Dynpro selektiert man die Daten aus den Tabellen LFA1 und KNA1. Dann soll der Speichern-Button geklickt werden und Lieferantennummer oder Kundennummer müssen in der dritten DB-Tabelle gespeichert werden. Wenn ich das einfach auf dem Selection-Screen mache, funktioniert es. Aber auf dem Dynpro geht es nicht. Woran kann es liegen?
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ManMan