我是SAP ABAPER的初学者。
我的任务是为模块SD创建ALV报告。
我做了“循环到VBAK表”,然后根据条件移动到要显示的每个数据的列。但是要获取此“账单计划日期”,我不知道条件“ WBAK-VBLN = VBKD-VBELN”的条件“ WHERE VBAK-VBLN = VBKD-VBELN和FPLT-FPLNR = VBKD-FPLNR”它吗?
请在“ FORM GET_DATA”中检查并更正我的脚本。或“表格显示”。
这是我的脚本:
REPORT Z_SD_DARMAWAN.
TABLES VBAK.
TABLES FPLT.
TABLES KNA1.
TABLES VBKD.
TYPES: BEGIN OF TY_FINAL,
KUNNR TYPE VBAK-KUNNR,
NAME1 TYPE KNA1-NAME1,
VBELN TYPE VBAK-VBELN,
AFDAT TYPE FPLT-AFDAT,
FPLNR TYPE VBKD-FPLNR,
END OF TY_FINAL.
TYPES: BEGIN OF TY_VBAK,
KUNNR TYPE VBAK-KUNNR,
VBELN TYPE VBAK-VBELN,
PS_PSP_PNR TYPE VBAK-PS_PSP_PNR,
WAERK TYPE VBAK-WAERK,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK.
TYPES: BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
NAME1 TYPE KNA1-NAME1,
END OF TY_KNA1.
TYPES: BEGIN OF TY_FPLT,
AFDAT TYPE FPLT-AFDAT,
FPLNR TYPE FPLT-FPLNR,
END OF TY_FPLT.
TYPES: BEGIN OF TY_VBKD,
VBELN TYPE VBKD-VBELN,
FPLNR TYPE VBKD-FPLNR,
END OF TY_VBKD.
DATA: IT_FINAL TYPE TABLE OF TY_FINAL, WA_FINAL TYPE TY_FINAL.
DATA: IT_VBAK TYPE TABLE OF TY_VBAK, WA_VBAK TYPE TY_VBAK.
DATA: IT_KNA1 TYPE TABLE OF TY_KNA1, WA_KNA1 TYPE TY_KNA1.
DATA: IT_FPLT TYPE TABLE OF TY_FPLT, WA_FPLT TYPE TY_FPLT.
DATA: IT_VBKD TYPE TABLE OF TY_VBKD, WA_VBKD TYPE TY_VBKD.
DATA: fieldcatalog TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
SELECT-OPTIONS: SO_KUNNR FOR VBAK-KUNNR.
SELECT-OPTIONS: SO_AUART FOR VBAK-AUART.
SELECT-OPTIONS: SO_VBELN FOR VBAK-VBELN.
SELECT-OPTIONS: SO_BSTNK FOR VBAK-BSTNK.
SELECT-OPTIONS: SO_PSPSP FOR VBAK-PS_PSP_PNR.
SELECT-OPTIONS: SO_BSTDK FOR VBAK-BSTDK.
SELECT-OPTIONS: SO_ERDAT FOR VBAK-ERDAT.
SELECT-OPTIONS: SO_ERNAM FOR VBAK-ERNAM.
SELECT-OPTIONS: SO_FKSAF FOR FPLT-FKSAF.
SELECT-OPTIONS: SO_ABSTK FOR VBAK-ABSTK.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY.
PERFORM BUILD_CATALOG.
PERFORM DISPLAY_ALV.
FORM GET_DATA .
SELECT KUNNR VBELN PS_PSP_PNR WAERK NETWR FROM VBAK INTO TABLE IT_VBAK
WHERE KUNNR IN SO_KUNNR
AND AUART IN SO_AUART
AND VBELN IN SO_VBELN
AND BSTNK IN SO_BSTNK
AND PS_PSP_PNR IN SO_PSPSP
AND BSTDK IN SO_BSTDK
AND ERDAT IN SO_ERDAT
AND ERNAM IN SO_ERNAM
AND ABSTK IN SO_ABSTK
AND AUART <> 'ZM01'.
REFRESH IT_KNA1.
SELECT KUNNR NAME1 FROM KNA1 INTO TABLE IT_KNA1 WHERE KUNNR IN SO_KUNNR.
REFRESH IT_VBKD.
SELECT VBELN FPLNR FROM VBKD INTO TABLE IT_VBKD WHERE VBELN IN SO_VBELN AND BSTDK IN SO_BSTDK.
REFRESH IT_FPLT.
SELECT AFDAT FPLNR FROM FPLT INTO TABLE IT_FPLT.
ENDFORM.
FORM DISPLAY .
LOOP AT IT_VBAK INTO WA_VBAK.
WA_FINAL-KUNNR = WA_VBAK-KUNNR. "Customer Id
READ TABLE IT_KNA1 INTO WA_KNA1 WITH KEY KUNNR = WA_VBAK-KUNNR.
WA_FINAL-NAME1 = WA_KNA1-NAME1. "Customer Name
WA_FINAL-VBELN = WA_VBAK-VBELN. "Contract Number
READ TABLE IT_VBKD INTO WA_VBKD WITH KEY VBELN = WA_VBAK-VBELN.
WA_FINAL-FPLNR = WA_VBKD-FPLNR.
READ TABLE IT_FPLT INTO WA_FPLT WITH KEY FPLNR = WA_VBKD-FPLNR.
WA_FINAL-AFDAT = WA_FPLT-AFDAT. "Billing Plan Date
APPEND WA_FINAl TO IT_FINAL.
CLEAR: WA_FINAl, WA_VBAK, WA_KNA1, WA_FPLT.
ENDLOOP.
ENDFORM.
FORM BUILD_CATALOG .
fieldcatalog-fieldname = 'KUNNR'.
fieldcatalog-seltext_m = 'Customer'.
fieldcatalog-col_pos = 0.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Custome Name'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Contract Number'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AFDAT'.
fieldcatalog-seltext_m = 'Billing Plan Date'.
fieldcatalog-col_pos = 10.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
ENDFORM.
FORM DISPLAY_ALV .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_fieldcat = fieldcatalog[]
i_save = 'x'
tables
t_outtab = IT_FINAL
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
ENDFORM.