BAPI_CHARACT_CHANGE (Änderung Klassifizierung)

Getting started ... Alles für einen gelungenen Start.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

BAPI_CHARACT_CHANGE (Änderung Klassifizierung)

Beitrag von sap_inchen (ForumUser / 21 / 1 / 0 ) »
ich möchte Text, d.h. Klassifizierungsmerkmalstexte und Klassfizierungsmerkmalswerttext (CABNT und CAWNT) ändern.

Dazu gibt es die beiden FuBas, die ich so aufrufe:

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.

Ich habe das Problem, dass das Programm mit einem internen Fehler zurückkommt.

Irgendwie ist der BuBa:
CTCV_CHECK_PATTERN
da mit von Party.

Im Programmteil LCTMVF2L - CHECK_CHANGE_OF_LENGTH werden irgendwie die Längen vor dem Komma und nach dem Komma ermittelt:

ANZ_VORKOMMA_VOR = CABN_SAVE-ANZST - CABN_SAVE-ANZDZ.
ANZ_VORKOMMA_NACH = ANZST - ANZDZ.

In meinem Fall sind die Werte:
CABN_SAVE-ANZST 8
CABN_SAVE-ANZDZ 2
ANZ_VORKOMMA_VOR 6
ANZ_VORKOMMA_NACH 3
ANZST 8
ANZDZ 5

Für mich sieht das so aus, als ob der ANZ_VORKOMMA_NACH nicht stimmt:
Das "Pattern" sieht in der Transaction CT04 so aus: ___.___,__
In der Tabelle CABN sieht es so aus: ___,___.__

Ich denke, dass das irgendwie damit zu tun hat...

Ich kann mir aber nicht vorstellen, dass man beim Fuba-Aufruf hier was falsch machen kann...

Hat jemand eine Idee.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: BAPI_CHARACT_CHANGE (Änderung Klassifizierung)

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich würde auf ein Problem im Bereich "Typisierung" tippen. Da Du aber leider nur ein Codefragment geboten hast, sehe ich keine Handhabe, Dir da zu helfen.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2639
Views
Klassifizierung via SD BAPI
von bechi » 28.11.2006 08:06 • Verfasst in ABAP® Core
4
Antw.
1956
Views
Change DIS
von Icke0801 » 05.04.2017 16:12 • Verfasst in ABAP® Core
2
Antw.
3391
Views
IW 38 - Change Layout
von xhuljano » 18.02.2015 16:12 • Verfasst in ABAP® für Anfänger
12
Antw.
6050
Views
ON CHANGE OF - HILFE
von Nici » 31.05.2005 11:14 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

ABAP unter GUI und FIORI
vor 22 Stunden von wreichelt 3 / 48
MaLo-Checker in ABAP
vor einer Woche von ewx 5 / 128

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.