<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Access via 'NULL' object reference not possible in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/access-via-null-object-reference-not-possible/m-p/4697176#M1103857</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i'm getting this abap dump "Access via 'NULL' object reference not possible"...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i'm not familiar with Badi Implementation. Can some one help me? thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my source code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD if_ex_me_process_po_cust~check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_HEADER()&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_order TYPE REF TO if_purchase_order_mm,&lt;/P&gt;&lt;P&gt;        ls_header TYPE mepoheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_ITEMS() method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_orderitem TYPE REF TO if_purchase_order_item_mm,&lt;/P&gt;&lt;P&gt;        lt_items TYPE STANDARD TABLE OF purchase_order_item,&lt;/P&gt;&lt;P&gt;        ls_item LIKE LINE OF lt_items.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for PO line item data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ls_mepoitem TYPE mepoitem,&lt;/P&gt;&lt;P&gt;        ls_mepoitem_persistent TYPE mepoitem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_ACCOUNTINGS()&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_account TYPE REF TO if_purchase_order_account_mm,&lt;/P&gt;&lt;P&gt;        lt_accountings TYPE STANDARD TABLE OF purchase_order_accounting,  "line type&lt;/P&gt;&lt;P&gt;        ls_accounting LIKE LINE OF lt_accountings.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for accounting assignment data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ls_mepoaccounting TYPE mepoaccounting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for persistent item indicator&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: l_persistent TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get PO header&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ls_header = im_header-&amp;gt;get_data( ).  " header details&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get PO items&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lo_po_order ?= im_header.            " casting to purchase document&lt;/P&gt;&lt;P&gt;  lt_items = lo_po_order-&amp;gt;get_items( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_items INTO ls_item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    lo_po_orderitem ?= ls_item-item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_mepoitem = lo_po_orderitem-&amp;gt;get_data( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    "Material number is not allowed to blank if item category is D (ext) = 9 (int), refer to SPRO-&amp;gt;Material Management-&amp;gt;Purchasing-&amp;gt;Define External Representation of Item Categories&lt;/P&gt;&lt;P&gt;    IF ( ls_mepoitem-pstyp NE 'D' AND ls_mepoitem-pstyp NE '9' ) AND ls_mepoitem-matnr EQ ''.&lt;/P&gt;&lt;P&gt;      ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF ls_header-ebeln NE space.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD lo_po_orderitem-&amp;gt;is_persistent&lt;/P&gt;&lt;P&gt;    RECEIVING&lt;/P&gt;&lt;P&gt;      re_persistent = l_persistent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_persistent = 'X'.  "If posted&lt;/P&gt;&lt;P&gt;    CALL METHOD lo_po_orderitem-&amp;gt;get_persistent_data&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        ex_data = ls_mepoitem_persistent.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF ls_header-frgke = 'Z' "Changing to material number &amp;amp; material text are not allowed if PO has been released.&lt;/P&gt;&lt;P&gt;        AND ( ls_mepoitem-ematn NE ls_mepoitem_persistent-ematn OR ls_mepoitem-txz01 NE ls_mepoitem_persistent-txz01 ).&lt;/P&gt;&lt;P&gt;        ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Get accountings&lt;/P&gt;&lt;P&gt;  IF ls_mepoitem-knttp NE space.&lt;/P&gt;&lt;P&gt;    IF ( ls_mepoitem-pstyp NE 'D' AND ls_mepoitem-pstyp NE '9' ) and ls_mepoitem-knttp NE 'U'.&lt;/P&gt;&lt;P&gt;      lt_accountings = lo_po_orderitem-&amp;gt;get_accountings( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT lt_accountings INTO ls_accounting.&lt;/P&gt;&lt;P&gt;        lo_po_account ?= ls_accounting-accounting.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_mepoaccounting = lo_po_account-&amp;gt;get_data( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      "Check GL/Account in account assignment&lt;/P&gt;&lt;P&gt;      IF ls_mepoaccounting-sakto EQ space.   "Posting is not allowed if GL Account in account assignment is blank.&lt;/P&gt;&lt;P&gt;        ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 29 Oct 2008 05:31:15 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-10-29T05:31:15Z</dc:date>
    <item>
      <title>Access via 'NULL' object reference not possible</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/access-via-null-object-reference-not-possible/m-p/4697176#M1103857</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i'm getting this abap dump "Access via 'NULL' object reference not possible"...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i'm not familiar with Badi Implementation. Can some one help me? thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my source code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD if_ex_me_process_po_cust~check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_HEADER()&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_order TYPE REF TO if_purchase_order_mm,&lt;/P&gt;&lt;P&gt;        ls_header TYPE mepoheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_ITEMS() method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_orderitem TYPE REF TO if_purchase_order_item_mm,&lt;/P&gt;&lt;P&gt;        lt_items TYPE STANDARD TABLE OF purchase_order_item,&lt;/P&gt;&lt;P&gt;        ls_item LIKE LINE OF lt_items.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for PO line item data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ls_mepoitem TYPE mepoitem,&lt;/P&gt;&lt;P&gt;        ls_mepoitem_persistent TYPE mepoitem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for GET_ACCOUNTINGS()&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lo_po_account TYPE REF TO if_purchase_order_account_mm,&lt;/P&gt;&lt;P&gt;        lt_accountings TYPE STANDARD TABLE OF purchase_order_accounting,  "line type&lt;/P&gt;&lt;P&gt;        ls_accounting LIKE LINE OF lt_accountings.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for accounting assignment data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ls_mepoaccounting TYPE mepoaccounting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declaration for persistent item indicator&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: l_persistent TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get PO header&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ls_header = im_header-&amp;gt;get_data( ).  " header details&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get PO items&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lo_po_order ?= im_header.            " casting to purchase document&lt;/P&gt;&lt;P&gt;  lt_items = lo_po_order-&amp;gt;get_items( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_items INTO ls_item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    lo_po_orderitem ?= ls_item-item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_mepoitem = lo_po_orderitem-&amp;gt;get_data( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    "Material number is not allowed to blank if item category is D (ext) = 9 (int), refer to SPRO-&amp;gt;Material Management-&amp;gt;Purchasing-&amp;gt;Define External Representation of Item Categories&lt;/P&gt;&lt;P&gt;    IF ( ls_mepoitem-pstyp NE 'D' AND ls_mepoitem-pstyp NE '9' ) AND ls_mepoitem-matnr EQ ''.&lt;/P&gt;&lt;P&gt;      ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF ls_header-ebeln NE space.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD lo_po_orderitem-&amp;gt;is_persistent&lt;/P&gt;&lt;P&gt;    RECEIVING&lt;/P&gt;&lt;P&gt;      re_persistent = l_persistent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF l_persistent = 'X'.  "If posted&lt;/P&gt;&lt;P&gt;    CALL METHOD lo_po_orderitem-&amp;gt;get_persistent_data&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        ex_data = ls_mepoitem_persistent.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF ls_header-frgke = 'Z' "Changing to material number &amp;amp; material text are not allowed if PO has been released.&lt;/P&gt;&lt;P&gt;        AND ( ls_mepoitem-ematn NE ls_mepoitem_persistent-ematn OR ls_mepoitem-txz01 NE ls_mepoitem_persistent-txz01 ).&lt;/P&gt;&lt;P&gt;        ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Get accountings&lt;/P&gt;&lt;P&gt;  IF ls_mepoitem-knttp NE space.&lt;/P&gt;&lt;P&gt;    IF ( ls_mepoitem-pstyp NE 'D' AND ls_mepoitem-pstyp NE '9' ) and ls_mepoitem-knttp NE 'U'.&lt;/P&gt;&lt;P&gt;      lt_accountings = lo_po_orderitem-&amp;gt;get_accountings( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT lt_accountings INTO ls_accounting.&lt;/P&gt;&lt;P&gt;        lo_po_account ?= ls_accounting-accounting.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_mepoaccounting = lo_po_account-&amp;gt;get_data( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      "Check GL/Account in account assignment&lt;/P&gt;&lt;P&gt;      IF ls_mepoaccounting-sakto EQ space.   "Posting is not allowed if GL Account in account assignment is blank.&lt;/P&gt;&lt;P&gt;        ch_failed = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Oct 2008 05:31:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/access-via-null-object-reference-not-possible/m-p/4697176#M1103857</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-29T05:31:15Z</dc:date>
    </item>
    <item>
      <title>Re: Access via 'NULL' object reference not possible</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/access-via-null-object-reference-not-possible/m-p/4697177#M1103858</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The most important information is (again) missing: which object reference is initial ("NULL")?&lt;/P&gt;&lt;P&gt;The ABAP dump will tell you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below I show an example how this can happen (and be avoided):&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
LOOP AT lt_accountings INTO ls_accounting.
  lo_po_account ?= ls_accounting-accounting.
ENDLOOP.
" QUESTION: Are you sure that lo_po_account hold an instance ???

" If LO_PO_ACCOUNT is empty the following statement will give you the dump.
ls_mepoaccounting = lo_po_account-&amp;gt;get_data( ).

" And that is how to avoid this (at least the dump. Whether your logic is still ok is another matter...)
CHECK ( lo_po_account IS BOUND ).
ls_mepoaccounting = lo_po_account-&amp;gt;get_data( ).
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Oct 2008 05:55:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/access-via-null-object-reference-not-possible/m-p/4697177#M1103858</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2008-10-29T05:55:07Z</dc:date>
    </item>
  </channel>
</rss>

