2020 May 18 11:35 AM
hi all,
i not getting these fields data in alv output...
VBELN, AUDAT, POSNR, MATNR, MEINS, MAKTX. please check code.
REPORT zmanoj4.
TABLES : kna1, vbak, vbap, makt.
TYPES : BEGIN OF ty,
kunnr TYPE kunnr,
name1 TYPE name1,
vbeln TYPE vbeln,
audat TYPE audat,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
netwr TYPE netwr,
maktx TYPE maktx,
END OF ty.
DATA : it TYPE TABLE OF ty,
wa TYPE ty.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_num TYPE kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get.
PERFORM alv.
PERFORM out.
FORM get.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc EQ 0.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
ENDIF.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc EQ 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.
LOOP AT it_vbak INTO DATA(wa_vbak).
READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
APPEND wa_vbak TO it.
ENDLOOP.
ENDFORM.
FORM alv.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'Accounting Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'AccountDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'Accounng Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AUDAT'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'AccounDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acincument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'KWMENG'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'AcingD'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-ref_tabname = 'MAKT'.
wa_fieldcat-seltext_m = 'Acing r'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM out.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = 'ACCOUNTING DOCUMENT DETAILS'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it.
ENDFORM.
2020 May 18 11:51 AM
Your main problem is in this logic. What do you suppose happens here?
LOOP AT it_vbak INTO DATA(wa_vbak).
READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
APPEND wa_vbak TO it.
ENDLOOP.But there are also other issues:
hi all,
i not getting these fields data in alv output...
VBELN, AUDAT, POSNR, MATNR, MEINS, MAKTX. please check code.
REPORT zmanoj4.
TABLES : kna1, vbak, vbap, makt.
TYPES : BEGIN OF ty,
kunnr TYPE kunnr,
name1 TYPE name1,
vbeln TYPE vbeln,
audat TYPE audat,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
netwr TYPE netwr,
maktx TYPE maktx,
END OF ty.
DATA : it TYPE TABLE OF ty,
wa TYPE ty.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_num TYPE kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get.
PERFORM alv.
PERFORM out.
FORM get.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc EQ 0.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
ENDIF.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc EQ 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.
LOOP AT it_vbak INTO DATA(wa_vbak).
READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
APPEND wa_vbak TO it.
ENDLOOP.
ENDFORM.
FORM alv.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'Accounting Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'AccountDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'Accounng Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AUDAT'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'AccounDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acincument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'KWMENG'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'AcingD'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-ref_tabname = 'MAKT'.
wa_fieldcat-seltext_m = 'Acing r'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM out.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = 'ACCOUNTING DOCUMENT DETAILS'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it.
ENDFORM.
2020 May 18 11:51 AM
Your main problem is in this logic. What do you suppose happens here?
LOOP AT it_vbak INTO DATA(wa_vbak).
READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
APPEND wa_vbak TO it.
ENDLOOP.But there are also other issues:
2020 May 18 1:03 PM
hi i made this modification now its working!!
REPORT zmanoj4.
TABLES : kna1, vbak, vbap, makt.
TYPES : BEGIN OF ty,
kunnr TYPE kunnr,
name1 TYPE name1,
vbeln TYPE vbeln,
audat TYPE audat,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
netwr TYPE netwr,
maktx TYPE maktx,
END OF ty.
DATA : it TYPE TABLE OF ty,
wa TYPE ty.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_num TYPE kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get.
PERFORM alv.
PERFORM out.
FORM get.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc EQ 0.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
ENDIF.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc EQ 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.
* LOOP AT it_vbak INTO DATA(wa_vbak).
* READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
* READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
* READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
* APPEND wa_vbak TO it.
* ENDLOOP.
LOOP at it_knal INTO data(wa_knal).
READ TABLE it_vbak INTO data(wa_vbak) with key kunnr = wa_knal-kunnr.
READ TABLE it_vbap INTO data(wa_vbap) with key vbeln = wa_vbak-vbeln.
READ TABLE it_makt INTO data(wa_makt) with key matnr = wa_vbap-matnr.
wa-kunnr = wa_vbak-kunnr.
wa-name1 = wa_knal-name1.
wa-vbeln = wa_vbap-vbeln.
wa-audat = wa_vbak-audat.
wa-posnr = wa_vbap-posnr.
wa-matnr = wa_makt-matnr.
wa-kwmeng = wa_vbap-kwmeng.
wa-meins = wa_vbap-meins.
wa-netwr = wa_vbap-netwr.
wa-maktx = wa_makt-maktx.
APPEND wa to it.
CLEAR wa.
ENDLOOP.
ENDFORM.
FORM alv.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'Accounting Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'AccountDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'Accounng Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AUDAT'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'AccounDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acincument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'KWMENG'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'AcingD'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-ref_tabname = 'MAKT'.
wa_fieldcat-seltext_m = 'Acing r'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM out.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = 'ACCOUNTING DOCUMENT DETAILS'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it.
ENDFORM.
2020 May 18 1:25 PM
manoj16393, glad you are a step further now, but there are still issues that need to be fixed with your coding that have been mentioned by me as well as by Mateusz:
1. If you select with the option FOR ALL ENTRIES from table VBAP, make sure, that this table is not initial, otherwise, you will select all values :
IF it_vbak[] IS NOT INITIAL. " make sure it_vbak is not initial when using FOR ALL ENTRIES
SELECT vbeln, posnr, matnr, kwmeng, meins, netwr
FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
ENDIF.2. If you use READ TABLE, either make sure to handle sy-subrc = 0, or initialize the fields, otherwise, you might end up with values from other records, in case there are missing matches:
APPEND wa to it.
CLEAR: wa, wa_vbak, wa_vbap, wa_makt.3. Currently you are selecting all possible VBAK orders for a customer as well as all VBAP positions for a VBAK order, but you are not transferring those to your ALV, is that on purpose? As of right now, you are just selecting one 'random' hit from VBAK as well as from VBAP to your ALV for one order. You would have to do a LOOP AT it_vbak instead of a READ TABLE it_vbak and the same with it_vbap to address this issue:
LOOP AT it_knal INTO data(wa_knal).
LOOP AT it_vbak INTO data(wa_vbak) with key kunnr = wa_knal-kunnr.
LOOP AT it_vbap INTO data(wa_vbap) with key vbeln = wa_vbak-vbeln.
READ TABLE it_makt INTO data(wa_makt) with key matnr = wa_vbap-matnr.
wa-kunnr = wa_vbak-kunnr.
wa-name1 = wa_knal-name1.
wa-vbeln = wa_vbap-vbeln.
wa-audat = wa_vbak-audat.
wa-posnr = wa_vbap-posnr.
wa-matnr = wa_makt-matnr.
wa-kwmeng = wa_vbap-kwmeng.
wa-meins = wa_vbap-meins.
wa-netwr = wa_vbap-netwr.
wa-maktx = wa_makt-maktx.
APPEND wa to it.
CLEAR: wa, wa_makt.
ENDLOOP.
ENDLOOP.
ENDLOOP.4. Currently you select from the language dependent description table MAKT for material descriptions without the preferred language (e.g. SPRAS = sy-langu), so all language descriptions will be selected. And when you loop, you also dont address this issue, and you cant, because you did not select the language.
2020 May 18 11:52 AM
Hi manoj16393
You're not moving information from the source internal tables to the result internal table. That's why you're not getting the value in ALV.
You can do this with MOVE-CORRESPONDING or field by field. Depends on the situation.
FORM get.
" DB SELECTs here
LOOP AT it_vbak INTO DATA(wa_vbak).
APPEND INITIAL LINE TO it REFERENCE INTO DATA(ld_it).
MOVE-CORRESPONDING wa_vbak TO ld_it->*.
READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbap TO ld_it->*.
READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_makt TO ld_it->*
ENDIF
ENDIF.
READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_kna1 TO ld_it->*.
ENDIF.
ENDLOOP.
ENDFORM.Also, your SELECT on VBAP table should be executed only if VBAK SELECT returns any results.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc EQ 0.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
IF sy-subrc = 0.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc EQ 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.
ENDIF.
ENDIF.<br>You can do this like this, or you can simply exit the GET procedure, after one of the KNA1/VBAK SELECT statements returns no results, because all others are dependent on these.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc <> 0.
RETURN.
ENDIF.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
IF sy-subrc <> 0.
RETURN
ENDIF.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc = 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.This way the code is easier to read and understand.
Also, it would be good to have IT_VBAP, IT_MAKT and IT_KNA1 defined as sorted internal tables, because you're reading data from these tables in a LOOP. Defining them as sorted (TYPE SORTED TABLE OF), with a key used for reading, would make your report's performance better.
regards,
Mateusz
2020 May 18 1:04 PM
hi i made this modification now its working!!
REPORT zmanoj4.
TABLES : kna1, vbak, vbap, makt.
TYPES : BEGIN OF ty,
kunnr TYPE kunnr,
name1 TYPE name1,
vbeln TYPE vbeln,
audat TYPE audat,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
netwr TYPE netwr,
maktx TYPE maktx,
END OF ty.
DATA : it TYPE TABLE OF ty,
wa TYPE ty.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_num TYPE kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get.
PERFORM alv.
PERFORM out.
FORM get.
SELECT kunnr,
name1 FROM kna1 INTO TABLE @DATA(it_knal)
WHERE kunnr EQ @p_num.
IF sy-subrc EQ 0.
SELECT vbeln,
audat,
kunnr FROM vbak INTO TABLE @DATA(it_vbak)
FOR ALL ENTRIES IN @it_knal
WHERE kunnr EQ @it_knal-kunnr.
ENDIF.
SELECT vbeln,
posnr,
matnr,
kwmeng,
meins,
netwr FROM vbap INTO TABLE @DATA(it_vbap)
FOR ALL ENTRIES IN @it_vbak
WHERE vbeln EQ @it_vbak-vbeln.
IF sy-subrc EQ 0.
SELECT matnr,
maktx FROM makt INTO TABLE @DATA(it_makt)
FOR ALL ENTRIES IN @it_vbap
WHERE matnr EQ @it_vbap-matnr.
ENDIF.
* LOOP AT it_vbak INTO DATA(wa_vbak).
* READ TABLE it_vbap INTO DATA(wa_vbap) WITH KEY vbeln = wa_vbak-vbeln.
* READ TABLE it_knal INTO DATA(wa_knal) WITH KEY kunnr = wa_vbak-kunnr.
* READ TABLE it_makt INTO DATA(wa_makt) WITH KEY matnr = wa_vbap-matnr.
* APPEND wa_vbak TO it.
* ENDLOOP.
LOOP at it_knal INTO data(wa_knal).
READ TABLE it_vbak INTO data(wa_vbak) with key kunnr = wa_knal-kunnr.
READ TABLE it_vbap INTO data(wa_vbap) with key vbeln = wa_vbak-vbeln.
READ TABLE it_makt INTO data(wa_makt) with key matnr = wa_vbap-matnr.
wa-kunnr = wa_vbak-kunnr.
wa-name1 = wa_knal-name1.
wa-vbeln = wa_vbap-vbeln.
wa-audat = wa_vbak-audat.
wa-posnr = wa_vbap-posnr.
wa-matnr = wa_makt-matnr.
wa-kwmeng = wa_vbap-kwmeng.
wa-meins = wa_vbap-meins.
wa-netwr = wa_vbap-netwr.
wa-maktx = wa_makt-maktx.
APPEND wa to it.
CLEAR wa.
ENDLOOP.
ENDFORM.
FORM alv.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'Accounting Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-ref_tabname = 'KNA1'.
wa_fieldcat-seltext_m = 'AccountDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'Accounng Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AUDAT'.
wa_fieldcat-ref_tabname = 'VBAK'.
wa_fieldcat-seltext_m = 'AccounDocument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acincument Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'KWMENG'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'Acing Document Number'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-seltext_m = 'AcingD'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-ref_tabname = 'MAKT'.
wa_fieldcat-seltext_m = 'Acing r'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM out.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = 'ACCOUNTING DOCUMENT DETAILS'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it.
ENDFORM.
2020 May 18 1:06 PM
Good news manoj16393 ! 🙂 I'm glad I was able to help you.
2020 May 18 1:08 PM
2020 May 18 1:58 PM
Do you mean that the columns are there in the ALV, but all the values are empty?
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |