Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Wir sind bei der Umstellung von SAP ECC 6.0 auf SAP/4 HANA. In kundeneigenen Quellcode verwenden wir den BAPI_ACC_DOCUMENT_POST und vorher _CHECK.

Der Code Inspector mit Prüfvariante S4HANA_READINESS_1909 schlägt an, weil das Betragsfeld erweitert worden ist. Laut SAP Note 2628724 ist beim Aufruf des BAPI das neue zu verwenden.

In Anlehnung an die SAP-eigene Klasse CL_CN_TAX_INPUT_INVC_SVC_TRANS, in der der Baustein auch - ich dachte HANA-like - verwendet wird, habe ich ein Testprogramm geschrieben, in dem das erweiterte Feld angesprochen wird. .

Code: Alles auswählen.

    CONSTANTS : lc_bus_act(4)  TYPE c         VALUE 'RFBU',
                lc_doc_type(2) TYPE c         VALUE 'SA'.
    DATA :
           lt_acc_glitem     TYPE TABLE OF bapiacgl09,
           ls_acc_glitem     TYPE bapiacgl09,
           lt_acc_curr_amnt  TYPE TABLE OF bapiaccr09,
           ls_acc_curr_amnt  TYPE bapiaccr09,
           g_obj_type        TYPE bapiache09-obj_type,      "#EC NEEDED
           g_obj_key         TYPE  bapiache09-obj_key,      "#EC NEEDED
           g_obj_sys         TYPE bapiache09-obj_sys,       "#EC NEEDED
           ls_acc_header     TYPE bapiache09,
           lt_return         TYPE TABLE OF bapiret2,
           ls_return         TYPE bapiret2.

data: gv_acc_document_num(10) type c.
data: gv_error_flag type xfeld.
* Prepare accounting header
    CLEAR ls_acc_header.
    ls_acc_header-bus_act     = lc_bus_act.
    ls_acc_header-username    = sy-uname.
    ls_acc_header-comp_code   = '0001' .
    ls_acc_header-doc_date    = sy-datum.
    ls_acc_header-pstng_date  = sy-datum.
    ls_acc_header-fisc_year   = sy-datum+0(4).
    ls_acc_header-header_txt = 'Unit Test'.
    ls_acc_header-obj_type = 'BKPFF'.
    ls_acc_header-ac_doc_no = '$'.
    ls_acc_header-doc_type = lc_doc_type.
    ls_acc_header-fisc_year = sy-datum+0(4).
    ls_acc_header-fis_period = sy-datum+4(2).

* Fill Line 1 of Document Item
    ls_acc_glitem-itemno_acc = '1'.
    ls_acc_glitem-stat_con = 'S'. "Debit
    ls_acc_glitem-gl_account = '10010000'.
    ls_acc_glitem-item_text  = 'Unit Test'.
    ls_acc_glitem-doc_type   = lc_doc_type.
    ls_acc_glitem-ac_doc_no = '$'.
    ls_acc_glitem-comp_code = '0001'.
    APPEND ls_acc_glitem TO lt_acc_glitem.
    CLEAR ls_acc_glitem.
* Fill Line 2 of Document Item
    ls_acc_glitem-itemno_acc = '2'.
    ls_acc_glitem-stat_con = 'H'.
    ls_acc_glitem-gl_account = '10010000'.
    ls_acc_glitem-item_text  = 'Unit Test'.
    ls_acc_glitem-doc_type   = lc_doc_type.
    ls_acc_glitem-ac_doc_no = '$'.
    ls_acc_glitem-comp_code = '0001' .
    APPEND ls_acc_glitem TO lt_acc_glitem.
    CLEAR ls_acc_glitem.

* Fill Line 1 of Document Value.
    ls_acc_curr_amnt-itemno_acc = '1'.
    ls_acc_curr_amnt-currency   = 'CNY'.
    ls_acc_curr_amnt-amt_doccur_long = '100'.  "AFLE
    ls_acc_curr_amnt-curr_type = '00'.
    APPEND ls_acc_curr_amnt TO lt_acc_curr_amnt.
    CLEAR ls_acc_curr_amnt.
* Fill Line 2 of Document Value.
    ls_acc_curr_amnt-itemno_acc = '2'.
    ls_acc_curr_amnt-currency   = 'CNY'.
    ls_acc_curr_amnt-amt_doccur_long = '-100'. "AFLE
    ls_acc_curr_amnt-curr_type = '00'.
    APPEND ls_acc_curr_amnt TO lt_acc_curr_amnt.
    CLEAR ls_acc_curr_amnt.

* Check the Document
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
      EXPORTING
        documentheader = ls_acc_header
      TABLES
        accountgl      = lt_acc_glitem
        currencyamount = lt_acc_curr_amnt
        return         = lt_return.

    READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
    IF sy-subrc NE 0.
      CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
        EXPORTING
          documentheader = ls_acc_header
        IMPORTING
          obj_type       = g_obj_type
          obj_key        = g_obj_key
          obj_sys        = g_obj_sys
        TABLES
          accountgl      = lt_acc_glitem
          currencyamount = lt_acc_curr_amnt
          return         = lt_return.
      READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
      IF sy-subrc NE 0.


        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.
    ELSE.
      gv_error_flag = 'X'.
    ENDIF.
Über das Testprogramm habe ich den Code Inspector mit Prüfvariante S4HANA_READINESS_1909 laufen lassen und der Inspektor meldet weiterhin Fehler "Syntaktisch nicht kompatible Änderung der vorhandenen Funktion (FUNC BAPI_ACC_DOCUMENT_CHECK, Siehe"

Wie blöd ist das denn?

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


Re: Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin Peter,

ich kenne das Problem und man bekommt es einfach durch Verwenden der neuen, verlängerten Parameter nicht weg. Aber es gibt ab 7.52 ein Pragma mit dem man das wegblenden kann.

Folgendermaßen sieht ein Aufruf eines BAPIs ( Klassifizierung) aus, welcher zwar ein erweitertes Feld hat, welcher aber in hinreichend vielen Situationen mit der alten Logik aufgerufen werden kann.
1. Aufruf ohne Pragma, 2. Aufruf mit Pragma. Nur der 1. Aufruf wird im SCI noch gemeldet.

Code: Alles auswählen.

REPORT.

    DATA:lv_objectkey       TYPE objnum,
         lt_allocvaluesnum  TYPE STANDARD TABLE OF bapi1003_alloc_values_num,
         lt_allocvalueschar TYPE STANDARD TABLE OF bapi1003_alloc_values_char,
         lt_allocvaluescurr TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,
         lt_return          TYPE STANDARD TABLE OF bapiret2.


    CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
      EXPORTING
        objectkey       = lv_objectkey
        objecttable     = 'EQUI'
        classnum        = 'OBJECTINFO'
        classtype       = '002'
      TABLES
        allocvaluesnum  = lt_allocvaluesnum
        allocvalueschar = lt_allocvalueschar
        allocvaluescurr = lt_allocvaluescurr
        return          = lt_return.


    CALL FUNCTION 'BAPI_OBJCL_GETDETAIL' "#EC CI_USAGE_OK[2438131]  No material number in used part of interface
      EXPORTING
        objectkey       = lv_objectkey
        objecttable     = 'EQUI'
        classnum        = 'OBJECTINFO'
        classtype       = '002'
      TABLES
        allocvaluesnum  = lt_allocvaluesnum
        allocvalueschar = lt_allocvalueschar
        allocvaluescurr = lt_allocvaluescurr
        return          = lt_return.
Gefunden hatte ich das Pragma, bzw. wie man das dem SCI klar macht, hier am Ende des Absatzes "SAP HANA and SAP S/4HANA checks".

Und genau welches Pragma man zum Ausblenden benötigt hatte sich im obigen Blog nicht gefunden und der SCI gibt für mein Beispiel auch keine sinnvolle Lösung. Aber folgendermaßen kommt man halbwegs einfach an das Pragma
  • Im SCI auf die ALV-Sicht gehen und sich eine der Zeilen die wegen der HANA-Readiness angemeckert werden raussuchen und sich die ganze Zeile als Detail anzeigen lassen
  • Es gibt ein Feld "Check class" welches den Klassennamen der SCI-Klasse angibt die für diese Meldung zuständig ist ( in meinem Beispiel die Klasse CL_CI_TEST_S4H_WHERE_USED )
  • In der genannten Klasse die Konstanten anschauen. Eine von denen ist hoffentlich das Pragma welches man sucht. ( in der Klasse CL_CI_TEST_S4H_WHERE_USED ist das die Konstante C_COMMENT_CI_USAGE_OK
  • Ich denke, dass die Pragmas klassenspezifisch sind.
    Daher ist es wohl am einfachsten so weit runterzublättern bis man nach den geerbten Attributen die für diese Klasse neu angelegten sieht und in denen wird man dann hoffentlich fündig.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
PeterPaletti

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Moin black_adept,

vielen lieben Dank für deine Antwort. Sie hat mir sehr geholfen.
In meinem Beispiel ist es dieselbe Klasse CL_CI_TEST_S4H_WHERE_USED und - logischer Weise- dieselbe Konstante . Rein zufällig ist es sogar dieselbe SAP-Note.

Nur dass bei BAPI_ACC_DOCUMENT_CHECK/POST noch eine weitere SAP-Note hinzukommt.

Das Coding sieht in meinem Beispiel jetzt so aus.

Code: Alles auswählen.

* Check the Document
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK' "#EC CI_USAGE_OK[2628704] Longfield is used
                                            "#EC CI_USAGE_OK[2438131] Material is not used
      EXPORTING
        documentheader = ls_acc_header
      TABLES
        accountgl      = lt_acc_glitem
        currencyamount = lt_acc_curr_amnt
        return         = lt_return.

    READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
    IF sy-subrc NE 0.
      CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' "#EC CI_USAGE_OK[2438131] Material is not used
                                             "#EC CI_USAGE_OK[2628704] Longfield is used
        EXPORTING
          documentheader = ls_acc_header
        IMPORTING
          obj_type       = g_obj_type
          obj_key        = g_obj_key
          obj_sys        = g_obj_sys
        TABLES
          accountgl      = lt_acc_glitem
          currencyamount = lt_acc_curr_amnt
          return         = lt_return.
      READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
      IF sy-subrc NE 0.


        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.
Es geht ohne Fehler im SCI durch.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Romaniac


Seite 1 von 1

Vergleichbare Themen

7
Antw.
3093
Views
Code Inspector
von Norbert_Aeq » 10.04.2012 15:54 • Verfasst in ABAP Objects®
9
Antw.
4099
Views
Code Inspector -> Eigene Prüfung
von SaskuAc » 09.05.2018 08:01 • Verfasst in ABAP® Core
0
Antw.
934
Views
Code Inspector - Eingabeparameter nicht möglich
von SaskuAc » 22.05.2018 14:59 • Verfasst in ABAP® Core
4
Antw.
2613
Views
Code Inspector erweitern durch neue Checks
von SteveOh » 20.08.2010 11:29 • Verfasst in ABAP® für Anfänger
7
Antw.
2448
Views
Report geschrieben - Fuba spinnt
von Littlered » 12.05.2005 09:35 • Verfasst in ABAP® Core

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140