Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
scj1234
Participant
17,829
This blog is targeted to ABAP technical team working on S4 HANA conversion projects.

This blog is in continuation with my previous blogs on handling of  Material Field Length Extension and Amount Field Length Extension issues during S/4 HANA conversion.

Here are links of the blogs

How to handle Amount Field Length Extension scenarios in S/4 HANA conversion

How to handle Material Field Length Extension scenarios in S/4 HANA conversion

In this blog I am going to elaborate  how SELECT statements on various simplified tables can be changed at the time of  code remediation activity.

Lets discuss some of the most prominent cases of SELECT scenarios in this blog. I will keep on adding new cases in my upcoming blogs.

  1.  SLECT on BSEG.


As per SAP note 2431747 BSEG will not contain the entries of open items . Some postings marked as BKPF-BSTAT will not be posted in BSEG but in ACDOCA table. Hence the SELECT statements on BSEG table need to be reviewed and changed.
SELECT bukrs
belnr
gjahr
buzei
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs = it_bkpf-bukrs
AND belnr = it_bkpf-belnr
AND gjahr = it_bkpf-gjahr .

Here SELECT on BSEG table can be replaced by API call as below. But before replacing the BSEG Select statement with API it is recommended to analyze if using of API will impact the functionality since API selects the data only from BSEG table and some entries are not updated in BSEG but in ACDOCA table.
DATA: et_bseg1  TYPE TABLE OF bseg.
DATA: et_par1 TYPE fagl_t_field.
APPEND 'BUKRS' TO et_par1 .
APPEND 'BELNR' TO et_par1 .
APPEND 'GJAHR' TO et_par1 .
APPEND 'BUZEI' TO et_par1 .

CALL FUNCTION 'FAGL_GET_BSEG_FOR_ALL_ENTRIES'
EXPORTING
it_for_all_entries = it_bkpf[]
i_where_clause = | BUKRS = IT_FOR_ALL_ENTRIES- BUKRS AND BELNR = IT_FOR_ALL_ENTRIES-BELNR AND GJAHR = IT_FOR_ALL_ENTRIES-GJAHR|
it_fieldlist = et_par1
IMPORTING
et_bseg = et_bseg1
EXCEPTIONS
NOT FOUND = 1
OTHERS = 2.
IF sy-subrc = 0 .

sy-dbcnt = lines( et_cmo_bseg1 ).
IF sy-subrc = 0 AND lines( et_bseg1 ) > 0 .
MOVE-CORRESPONDING et_bseg1 TO it_bseg[] .
ELSE.
sy-subrc = 4.
ENDIF.

ENDIF.

2. SELECT on VBUK table

SAP note 2198647 provides the details about data model changes in SD area. In below SELECT statement the document status is being fetched from the table VBUK, this query would work in ECC environment but not in S/4 HANA. In S/4 HANA the document status fields have been removed from the vbuk tables and moved to respective header table of the document like LIKP, VBAK.

Example 1.
  SELECT SINGLE wbstk
FROM vbuk
INTO l_delivery_gi_status
WHERE vbeln = <lfs_xvttp>-vbeln.

This SELECT statement can be corrected as below
  SELECT SINGLE wbstk
FROM likp
INTO l_delivery_gi_status
WHERE vbeln = <lfs_xvttp>-vbeln.

 

Example 2

For selecting the multiple column data VBUK or VBUP tables following APIs can be used.

SD_VBUK_READ_FROM_DOC

SD_VBUP_READ_FROM_DOC

SD_VBUP_READ_FROM_DOC_MULTI

SD_VBUK_READ_FROM_DOC_MULTI

see the example 2 below
SELECT SINGLE wbstk trsta INTO (l_wbstk, l_trsta)
FROM vbuk
WHERE vbeln = p_v_delivery AND
vbtyp = 'J'.

This SELECT statement can be modified as below
DATA: lwa_cmo_VBUK_temp1 TYPE vbuk.
CALL FUNCTION 'SD_VBUK_READ_FROM_DOC'
EXPORTING
i_vbeln = P_V_DELIVERY
i_vbtyp = 'J'
IMPORTING
es_vbuk = lwa_VBUK_temp1
EXCEPTIONS
vbeln_not_found = 1
vbtyp_not_supported = 2
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


MOVE lwa_vbuk_temp1-wbstk TO l_wbstk .
MOVE lwa_vbuk_temp1-trsta TO l_trsta .

3. SELECT on T881 table

According to note 2431747 , customizing tables T881, T881T and T881G are made obsolete in S/4 HANA. Hence the SELECT statements on these tables have to be replaced by API calls as shown in the example below.
    SELECT SINGLE tab FROM t881
INTO v_tabela
WHERE rldnr EQ '90'.

This SELECT statement can be corrected by using the class method cl_fins_acdoc_util=>get_t881_emu
  cl_fins_acdoc_util=>get_t881_emu(
EXPORTING
iv_rldnr = '90' " Ledger
IMPORTING
es_t881 = DATA(EWA_finsdoc2) " Ledger Master
EXCEPTIONS
not_found = 1
OTHERS = 2 ).
IF sy-subrc = 0.
v_tabela = ewa_finsdoc2-tab .
ENDIF.

 

4. SELECT on KONV table

According to note 2220005, KONV table has been replaces by PRCD_ELEMENTS table. SELECT on KONV table can be replaced by API cl_prc_result_factory=>get_instance( )->get_prc_result( ). OR CDS view V_KONV can also be used in place of KONV table.See the example below.
     SELECT knumv kschl kbetr
FROM konv
INTO TABLE t_konv
FOR ALL ENTRIES IN t_vbak
WHERE knumv = t_vbak-knumv.

The SELECT statement can be corrected as below
DATA: BEGIN OF ET_cmo_KONV1  OCCURS 0 ,
knumv TYPE knumv,
kschl TYPE kscha,
kbetr TYPE kbetr,
END OF ET_KONV1 .
SELECT knumv, kschl, kbetr
FROM v_konv_cds
INTO TABLE @et_konv1
FOR ALL ENTRIES IN @t_vbak
WHERE knumv = @t_vbak-knumv.
MOVE-CORRESPONDING ET_KONV1[] TO t_konv[] .

5. SELECT on VBRK and VBRP table

As per SAP note 2768887 , the where clause in SELECT statements on VBRK and VBRP tables check should have check for DRAFT field as well to make sure the SELECT will work as before.
  SELECT * FROM vbrk
INTO TABLE it_vbrk
WHERE fkart = 'F2'.

This select statement can be corrected as below
  SELECT * FROM vbrk
INTO TABLE it_vbrk
WHERE fkart = 'F2'.
AND draft = space.

If VBRK-DRAFT = space is not added in the where clause , the SELECT statement will return values from FIORI draft table as well , which in not desired. Since draft values are not posted in the table.

Summary



























BSEG Replace SELECT by API
VBUK

·  If Status fields to be selected up from VBUK, use respective       document tables like VBAP and LIKP

·  If multiple fields from VBUK to be selected use the API
VBUP If multiple fields from VBUK to be selected use the API
T881, T881T and T881G Use API instead of direct SELECT on Tables T881, T881T and T881G
KONV Use the CDS view V_KONV instead of KONV or SAP std API
VBRK and VBRP Use additional condition DRAFT = space in Where clause of SELECT

This blog doesn't end here since there are many such scenarios which we come across during code remediation phase.  I will keep on adding new blogs for more code remediation scenarios.
1 Comment
Labels in this area