A short code snippet which determines the budget billing for a print doc.
FORM get_soll_datum_for_bbp USING is_doc_item TYPE erdz CHANGING cs_doc_header LIKE t_doc_header_item. DATA: lo_date TYPE REF TO cl_sawe_date, lt_eabps TYPE TABLE OF eabps, ls_erdb TYPE erdb, ls_eabps LIKE LINE OF lt_eabps, lv_month_name TYPE t247-ltx, lv_kmonth TYPE kmonth . * Über ERDB den Buchungsbeleg zum Druckbeleg ermitteln. SELECT SINGLE * FROM erdb INTO ls_erdb WHERE opbel = cs_doc_header-opbel. * Dann mit buchungsbeleg den abschlagsplan lesen. CALL FUNCTION 'ISU_S_BBP_GET_EABP' EXPORTING x_opbel = ls_erdb-invopbel * IMPORTING * Y_EABP = * Y_AUGBL = TABLES yt_eabps = lt_eabps EXCEPTIONS not_found = 1 OTHERS = 2 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. READ TABLE lt_eabps INTO ls_eabps WITH KEY opupw = ls_erdb-invopupw opupk = ls_erdb-invopupk. * Soll Datum der Abschlagsforderung verwenden um Abschlagsmonat zu ermittlen. lo_date = cl_sawe_date=>get_instance( ). "#13687: Abschlagsmonat über sammelbeleg ermitteln und nicht wie "bei der Implementierung vereinbart den ersten Einzelbeleg. lv_kmonth = ls_eabps-solldat. CALL METHOD lo_date->get_month_name EXPORTING * iv_date = iv_kmonth = lv_kmonth IMPORTING * ev_stext = ev_ltext = lv_month_name. CONCATENATE lv_month_name ls_eabps-solldat(4) INTO cs_doc_header-absch_monat SEPARATED BY space. ENDFORM. "get_soll_datum_for_bbp