Code: Alles auswählen.
*
* Daten lesen
*
CALL FUNCTION 'BAPI_CHARACT_GETDETAIL'
EXPORTING
charactname = cs_alv-atnam
keydate = sy-datum
* language = cs_alv-spras "Alle Sprachen lesen, da sonst die nicht gelesene Sprachen gelöscht werden :-(
IMPORTING
charactdetail = ls_charactdetail
TABLES
charactdescr = lt_charactdescr
charactvaluesnum = lt_charactvaluesnum
charactvalueschar = lt_charactvalueschar
charactvaluescurr = lt_charactvaluescurr
charactvaluesdescr = lt_charactvaluesdescr
charactreferences = lt_charactreferences
charactrestrictions = lt_charactrestrictions
return = lt_bapiret2.
LOOP AT lt_bapiret2 ASSIGNING <ls_bapiret2> WHERE type = 'E'.
MESSAGE ID <ls_bapiret2>-id TYPE <ls_bapiret2>-type NUMBER <ls_bapiret2>-number
WITH <ls_bapiret2>-message_v1 <ls_bapiret2>-message_v2 <ls_bapiret2>-message_v3 <ls_bapiret2>-message_v4
INTO cs_alv-message.
cs_alv-iconmessage = icon_red_light.
lv_error = cs_alv-message.
RETURN.
ENDLOOP.
*
* ls_charactdetail umformen in lt_charactdetail.
*
APPEND ls_charactdetail TO lt_charactdetail.
*
* neuer Wert.
*
READ TABLE lt_charactdescr ASSIGNING <ls_charactdescr> WITH KEY language_int = cs_alv-spras.
IF sy-subrc = 0.
<ls_charactdescr>-description = cs_alv-newval.
IF <ls_charactdescr>-header1 IS NOT INITIAL.
<ls_charactdescr>-header1 = cs_alv-newval.
ENDIF.
IF <ls_charactdescr>-header2 IS NOT INITIAL.
<ls_charactdescr>-header1 = cs_alv-newval.
ENDIF.
ELSE.
APPEND INITIAL LINE TO lt_charactdescr ASSIGNING <ls_charactdescr>.
<ls_charactdescr>-description = cs_alv-newval.
<ls_charactdescr>-language_int = cs_alv-spras.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
EXPORTING
input = <ls_charactdescr>-language_int
IMPORTING
output = <ls_charactdescr>-language_iso.
ENDIF.
*
* Wert abspeichern
*
CALL FUNCTION 'BAPI_CHARACT_CHANGE' "Alle Parameter mitgeben, da sonst Werte gelöscht werden
EXPORTING
charactname = cs_alv-atnam
* CHANGENUMBER =
* KEYDATE = SY-DATUM
TABLES
charactdetailnew = lt_charactdetail
charactdescrnew = lt_charactdescr
charactvaluesnumnew = lt_charactvaluesnum
charactvaluescharnew = lt_charactvalueschar
charactvaluescurrnew = lt_charactvaluescurr
charactvaluesdescrnew = lt_charactvaluesdescr
* charactreferencesnew = lt_charactreferences
* charactrestrictionsnew = lt_charactrestrictions
return = lt_bapiret2.
LOOP AT lt_bapiret2 ASSIGNING <ls_bapiret2> WHERE type = 'E'.
MESSAGE ID <ls_bapiret2>-id TYPE <ls_bapiret2>-type NUMBER <ls_bapiret2>-number
WITH <ls_bapiret2>-message_v1 <ls_bapiret2>-message_v2 <ls_bapiret2>-message_v3 <ls_bapiret2>-message_v4
INTO cs_alv-message.
cs_alv-iconmessage = icon_red_light.
lv_error = cs_alv-message.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = ls_bapiret2.
RETURN.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
IMPORTING
return = ls_bapiret2.
IF ls_bapiret2-type = 'E'.
MESSAGE ID ls_bapiret2-id TYPE ls_bapiret2-type NUMBER ls_bapiret2-number
WITH ls_bapiret2-message_v1 ls_bapiret2-message_v2 ls_bapiret2-message_v3 ls_bapiret2-message_v4
INTO cs_alv-message.
cs_alv-iconmessage = icon_red_light.
lv_error = cs_alv-message.
RETURN.
ENDIF.