cancel
Showing results for 
Search instead for 
Did you mean: 

Help needed in debugging the BADI: BBP_CREATE_REQ_BACk

Former Member
0 Kudos

Hi,

I need help in debugging a BADI which causing an error ' SE142 please enter quantity in line 3000111'.

This happens only when number items in the cart are more than four and only for Service category items for which we have this BADI, if the items were less than or equal to 4, follow on document is created.

Please let me know what could be the error.

Thank you,

Manyam

METHOD if_ex_bbp_create_req_back~fill_req_interface.

----


  • Method Parameters:

----


*LOGICAL_SYSTEM TYPE BBP_BACKEND_DEST-LOG_SYS OPTIONAL

*REQ_ITEMS TYPE BBP_REQ_ITEM_SPOOL

*REQ_ITEM_ACCOUNT TYPE BBP_REQ_ACCT_SPOOL

*REQ_ITEM_TEXT TYPE BBP_REQ_TEXT_SPOOL

*REQ_LIMITS TYPE BBP_REQ_LIMITS_SPOOL

*REQ_CONTRACT_LIMITS TYPE BBP_REQ_LIMITS_CONTR_SPOOL

*REQ_SERVICES TYPE BBP_REQ_SERV_SPOOL

*REQ_SERV_ACCOUNT TYPE BBP_REQ_SERV_ACC_SPOOL

*REQ_SERV_TEXT TYPE BBP_REQ_SERV_TEXT_SPOOL

*REQ_ADDRDELIVERY TYPE BBP_REQ_ADDRDELIVERY_SPOOL

----


  • This is the logic to create a Service Requisition based on a service

  • material group selected in the Shopping Cart. This logic is based on

  • SAP's standard function SPOOL_RQ_READ_BAPI_EXPORTS from which this

  • BADI is called.

----


  • INSERT FUNCTION SPOOL_RQ_READ_BAPI_EXPORTS TO REPROCESS DATA FOR

  • SERVICE SPECIAL REQUESTS. -- IOK 07/13/01

----


*function spool_rq_read_bapi_exports.

*"----


""Lokale Schnittstelle:

*" IMPORTING

*" VALUE(REQNO) LIKE REQHEAD-REQNO

*" VALUE(REQUIS_NUMBER) LIKE BAPIEBANC-PREQ_NO

*" EXPORTING

*" VALUE(SKIP_ITEMS_WITH_ERROR) LIKE BAPIMMPARA-SELECTION

*" VALUE(LOGICAL_SYSTEM) LIKE BBP_BACKEND_DEST-LOG_SYS

*" TABLES

*" REQUISITION_ITEMS STRUCTURE BAPIEBANC

*" REQUISITION_ACCOUNT_ASSIGNMENT STRUCTURE BAPIEBKN

*" REQUISITION_ITEM_TEXT STRUCTURE BAPIEBANTX

*" REQUISITION_LIMITS STRUCTURE BAPIESUHC

*" REQUISITION_CONTRACT_LIMITS STRUCTURE BAPIESUCC

*" REQUISITION_SERVICES STRUCTURE BAPIESLLC

*" REQUISITION_SRV_ACCASS_VALUES STRUCTURE BAPIESKLC

*" RETURN STRUCTURE BAPIRETURN

*" REQUISITION_SERVICES_TEXT STRUCTURE BAPIESLLTX

*" REQUISITION_ADDRDELIVERY STRUCTURE BBPS_RQADDRDELIVERY_46

*" CONTROL_RECORD STRUCTURE BBP_CONTROL_RECORD

*" EXCEPTIONS

*" INTERNAL_ERROR

*"----


----


Data Declaration -
from LBBP_BS_RQTOP -

- Header -


DATA: reqheader TYPE reqhead.

- Header services -


DATA: reqheaders TYPE reqheads.

- References -


TYPES: reqreferences_type TYPE reqref.

DATA: reqreferences TYPE STANDARD TABLE OF reqreferences_type

INITIAL SIZE 10.

DATA: l_reqreferences TYPE reqreferences_type,

x_reqreferences TYPE reqreferences_type.

- Administrative lines requirement request -


TYPES: reqlines_type TYPE reqline.

DATA: reqlines TYPE STANDARD TABLE OF reqlines_type

INITIAL SIZE 10.

DATA: l_reqlines TYPE reqlines_type.

- MRO-Lines requirement request -


TYPES: reqlinemas_type TYPE reqlinema_eci.

DATA: reqlinemas TYPE STANDARD TABLE OF reqlinemas_type

INITIAL SIZE 10.

DATA: l_reqlinemas TYPE reqlinemas_type.

- SRV-Lines requirement request -


TYPES: reqlinesrs_type TYPE bbps_reqlinesr_eci.

DATA: reqlinesrs TYPE STANDARD TABLE OF reqlinesrs_type

INITIAL SIZE 10.

DATA: l_reqlinesrs TYPE reqlinesrs_type.

- Texts requirement request -


TYPES: reqtexts_type TYPE reqtext.

DATA: reqtexts TYPE STANDARD TABLE OF reqtexts_type

INITIAL SIZE 10.

DATA: l_reqtexts TYPE reqtexts_type.

*- Delivery address

TYPES: reqaddress_type TYPE reqaddress.

DATA: reqaddress TYPE STANDARD TABLE OF reqaddress_type

INITIAL SIZE 10.

DATA: l_reqaddress TYPE reqaddress_type.

- Account assignment requirement request -


TYPES: reqaccts_type TYPE reqacct_470.

DATA: reqaccts TYPE STANDARD TABLE OF reqaccts_type

INITIAL SIZE 10.

DATA: l_reqaccts TYPE reqaccts_type.

- tablekey with the shortlife-line -


DATA: BEGIN OF shortkey,

client TYPE ec_client, "REQLINE-CLIENT,

reqno TYPE ec_reqno, "REQLINE-REQNO,

reqsline TYPE reqsline, "REQLINE-REQSLINE,

reqlline TYPE reqlline, "REQLINE-REQLLINE,

END OF shortkey.

- tablekey with the longlife-line -


DATA: BEGIN OF longkey,

client TYPE ec_client, "REQLINE-CLIENT,

reqno TYPE ec_reqno, "REQLINE-REQNO,

reqlline TYPE reqlline, "REQLINE-REQLLINE,

END OF longkey.

DATA: BEGIN OF bankey,

preq_no TYPE banfn, "BAPIEBAN-PREQ_NO,

preq_item TYPE bnfpo, "BAPIPOGN-PREQ_ITEM,

END OF bankey.

  • any other working fields

DATA: h_preq_item TYPE bnfpo, "BAPIEBANC-PREQ_ITEM,

h_srv_item TYPE bnfpo, "BAPIEBANC-PREQ_ITEM,

h_logsys TYPE log_system. "reqref-logical_system.

DATA: h_serial_no TYPE dzebkn. "BAPIEBKN-SERIAL_NO.

DATA: h_packno_item TYPE packno, "BAPIESLL-PCKG_NO,

h_packno_srv TYPE packno, "BAPIESLL-PCKG_NO,

h_introw TYPE srv_line_no, "BAPIESLL-LINE_NO,

h_serial_no_srv TYPE dzekkn, "BAPIESKN-SERIAL_NO,

h_srv_outl_created,

next TYPE i,

h_index LIKE sy-tabix,

h_wempf TYPE wempf. "bapiekkn-gr_rcpt.

------ End of std data declaration -


DATA: l_req_items TYPE bapiebanc,

l_req_item_account TYPE bapiebkn,

l_req_item_text TYPE bapiebantx,

l_req_limits TYPE bapiesuhc,

l_req_contract_limits TYPE bapiesucc,

l_req_services TYPE bapiesllc,

l_req_serv_account TYPE bapiesklc,

l_req_serv_text TYPE bapieslltx,

l_req_addrdelivery TYPE bbps_rqaddrdelivery_46.

DATA:

old_req_items TYPE STANDARD TABLE OF bapiebanc,

old_req_item_account TYPE STANDARD TABLE OF bapiebkn,

old_req_item_text TYPE STANDARD TABLE OF bapiebantx,

old_req_limits TYPE STANDARD TABLE OF bapiesuhc,

old_req_contract_limits TYPE STANDARD TABLE OF bapiesucc,

old_req_services TYPE STANDARD TABLE OF bapiesllc,

old_req_serv_account TYPE STANDARD TABLE OF bapiesklc,

old_req_serv_text TYPE STANDARD TABLE OF bapieslltx,

old_req_addrdelivery TYPE STANDARD TABLE OF

bbps_rqaddrdelivery_46.

DATA: l_mat_group TYPE comm_category-category_id.

DATA: f_change_required TYPE c,

f_limit_change TYPE c,

f_mat_sr_change TYPE c,

f_first_change TYPE c VALUE 'X'.

  • Data declaration for Shopping Cart number and PO number

DATA: reqno TYPE ec_reqno,

requis_number TYPE banfn.

DATA: l_current_item TYPE bnfpo,

line_item(5) TYPE n.

----


Begin Processing ----

DATA: l_requis_number TYPE banfn. "jms 022802

            • DEBUG TOOL ****** Goto SM50

*data: i type i value 1.

*while i <> 0.

  • i = i + 1.

*endwhile.

            • END DEBUG TOOL *******

    • Get Req Number and Shopping Cart Number

  • read table req_items into l_req_items index 1.

  • requis_number = l_req_items-preq_no.

*

  • select single reqno

  • into (reqno)

  • from reqref

  • where refnumber = requis_number.

  • read detailed data from the requirement request

  • call function 'BBP_REQREQ_GETDETAIL'

  • EXPORTING

  • reqno = reqno

  • IMPORTING

  • req_header = reqheader

  • req_header_srv = reqheaders

  • TABLES

  • req_reference = reqreferences

  • req_line = reqlines

  • req_line_mat = reqlinemas

  • req_line_srv = reqlinesrs

  • req_text = reqtexts

  • req_acct = reqaccts

  • req_address = reqaddress

  • EXCEPTIONS

  • not_found = 1

  • foreign_lock = 2

  • no_enqueue_possible = 3

  • others = 4.

*

  • if sy-subrc <> 0.

    • raise internal_error.

    • exit.

  • endif.

  • Begin JMS

  • PO_NUM = PO_HEADER-PO_NUMBER.

  • CMH Data declaration

TYPES: et_header TYPE bbp_pds_sc_header_d.

DATA: t_et_header TYPE STANDARD TABLE OF et_header INITIAL SIZE 0,

x_et_header TYPE et_header.

TYPES: et_item TYPE bbp_pds_sc_item_d.

DATA: t_et_item TYPE STANDARD TABLE OF et_item INITIAL SIZE 0,

x_et_item TYPE et_item.

TYPES: sc_header TYPE bbp_pds_sc_header_d.

DATA: x_sc_header TYPE sc_header.

TYPES: sc_is_pd TYPE xfeld.

DATA: l_sc_is_pd TYPE sc_is_pd.

TYPES: sc_item TYPE bbp_pds_sc_item_d.

DATA: t_sc_item TYPE STANDARD TABLE OF sc_item INITIAL SIZE 0,

x_sc_item TYPE sc_item.

TYPES: sc_account TYPE bbp_pds_acc.

DATA: t_sc_account TYPE STANDARD TABLE OF sc_account INITIAL SIZE 0,

x_sc_account TYPE sc_account.

TYPES: sc_partner TYPE bbp_pds_partner.

DATA: t_sc_partner TYPE STANDARD TABLE OF sc_partner INITIAL SIZE 0,

x_sc_partner TYPE sc_partner.

TYPES: sc_confirm TYPE bbp_pds_con.

DATA: t_sc_confirm TYPE STANDARD TABLE OF sc_confirm INITIAL SIZE 0,

x_sc_confirm TYPE sc_confirm.

TYPES: sc_longtext TYPE bbp_pds_longtext.

DATA: t_sc_longtext TYPE

STANDARD TABLE OF sc_longtext INITIAL SIZE 0,

x_sc_longtext TYPE sc_longtext.

TYPES: sc_limit TYPE bbp_pds_limit.

DATA: t_sc_limit TYPE STANDARD TABLE OF sc_limit INITIAL SIZE 0,

x_sc_limit TYPE sc_limit.

TYPES: sc_orgdata TYPE bbp_pds_org.

DATA: t_sc_orgdata TYPE

STANDARD TABLE OF sc_orgdata INITIAL SIZE 0,

x_sc_orgdata TYPE sc_orgdata.

TYPES: sc_tax TYPE bbp_pds_tax.

DATA: t_sc_tax TYPE STANDARD TABLE OF sc_tax INITIAL SIZE 0,

x_sc_tax TYPE sc_tax.

TYPES: sc_pridoc TYPE bbp_pds_prc.

DATA: t_sc_pridoc TYPE STANDARD TABLE OF sc_pridoc INITIAL SIZE 0,

x_sc_pridoc TYPE sc_pridoc.

TYPES: sc_messages TYPE bbp_pds_messages.

DATA: t_sc_messages TYPE

STANDARD TABLE OF sc_messages INITIAL SIZE 0,

x_sc_messages TYPE sc_messages.

TYPES: sc_actval TYPE bbp_pds_actval.

DATA: t_sc_actval TYPE STANDARD TABLE OF sc_actval INITIAL SIZE 0,

x_sc_actval TYPE sc_actval.

TYPES: sc_acc_actval TYPE bbp_pds_actval.

DATA: t_sc_acc_actval TYPE STANDARD TABLE OF sc_acc_actval

INITIAL SIZE 0,

x_sc_acc_actval TYPE sc_acc_actval.

TYPES: sc_header_rel TYPE bbp_pds_hrel.

DATA: t_sc_header_rel TYPE STANDARD TABLE OF sc_header_rel

INITIAL SIZE 0,

x_sc_header_rel TYPE sc_header_rel.

TYPES: sc_itmlim_rel TYPE bbp_pds_ilrel.

DATA: t_sc_itmlim_rel TYPE STANDARD TABLE OF sc_itmlim_rel

INITIAL SIZE 0,

x_sc_itmlim_rel TYPE sc_itmlim_rel.

TYPES: it_cuf_item_type TYPE bbps_cuf_item.

DATA: t_it_cuf_item TYPE STANDARD TABLE OF it_cuf_item_type

INITIAL SIZE 0,

x_it_cuf_item TYPE it_cuf_item_type.

- Contract limits -


TYPES: reqconlimits_type TYPE reqheads.

DATA: reqconlimits TYPE STANDARD TABLE OF reqconlimits_type

INITIAL SIZE 10.

DATA: l_reqconlimits TYPE reqconlimits_type.

DATA: lv_abort TYPE xfeld,

lv_is_pd TYPE xfeld,

lv_deliv_date LIKE sy-datum,

lv_tabix LIKE sy-tabix,

lv_line TYPE introw,

lv_msarg TYPE char200,

lv_sc_guid TYPE bbp_pdview_iap-header,

lv_req_guid TYPE bbp_pdview_iap-header.

DATA: x_requis_number TYPE bapiebanc.

IF NOT req_items[] IS INITIAL.

CLEAR l_requis_number.

READ TABLE req_items INTO x_requis_number INDEX 1.

l_requis_number = x_requis_number-preq_no.

requis_number = x_requis_number-preq_no.

ENDIF.

  • Get PO Guid from Backend Table.

SELECT SINGLE guid

INTO lv_req_guid

FROM bbp_pdbei

WHERE be_object_id = l_requis_number

AND be_object_type = 'BUS2105'.

  • Get Shopping Cart Guid from PO Guid

SELECT SINGLE header

INTO lv_sc_guid

FROM bbp_pdview_iap

WHERE guid = lv_req_guid.

  • Get detail from shopping cart

CALL FUNCTION 'BBP_PD_SC_GETDETAIL'

EXPORTING

i_guid = lv_sc_guid

i_with_itemdata = 'X'

IMPORTING

e_header = x_sc_header

ev_is_pd = l_sc_is_pd

TABLES

e_item = t_sc_item

e_account = t_sc_account

e_partner = t_sc_partner

e_confirm = t_sc_confirm

e_longtext = t_sc_longtext

e_limit = t_sc_limit

e_orgdata = t_sc_orgdata

e_tax = t_sc_tax

e_pridoc = t_sc_pridoc

e_messages = t_sc_messages

e_actval = t_sc_actval

e_acc_actval = t_sc_acc_actval

e_header_rel = t_sc_header_rel

e_itmlim_rel = t_sc_itmlim_rel.

lv_is_pd = l_sc_is_pd.

  • message handling

IF NOT t_sc_messages[] IS INITIAL.

CALL FUNCTION 'BBP_BS_ADD_MESSAGES'

IMPORTING

ev_abort = lv_abort

TABLES

it_messages = t_sc_messages.

ENDIF.

  • if error occured set alert/ exception.

IF NOT lv_abort IS INITIAL.

CALL FUNCTION 'BBP_ALERT_SB_LOCAL'

EXPORTING

msgid = 'BBP_PD'

msgno = 280

msgarg1 = lv_msarg

EXCEPTIONS

invalid_parameters = 1

OTHERS = 2.

  • RAISE internal_error.

ENDIF.

  • map shopping cart in new structure into old structure to be able

  • to continue with the old coding

REFRESH t_sc_messages.

CALL FUNCTION 'BBP_SC_MAP_PD_TO_REQ'

EXPORTING

is_new_header = x_sc_header

IMPORTING

es_reqhead = reqheader

es_req_heads = reqheaders

  • es_cuf_header = is_cuf_header

TABLES

et_req_reference = reqreferences

et_req_line = reqlines

et_req_line_mat = reqlinemas

et_req_line_srv = reqlinesrs

et_req_text = reqtexts

et_req_acct = reqaccts

et_req_address = reqaddress

et_req_conlimit = reqconlimits

it_new_items = t_sc_item

it_account = t_sc_account

it_partner = t_sc_partner

it_longtext = t_sc_longtext

it_limit = t_sc_limit

it_orgdata = t_sc_orgdata

it_tax = t_sc_tax

it_actval = t_sc_actval

it_itmlim_rel = t_sc_itmlim_rel

et_messages = t_sc_messages.

  • et_cuf_item = it_cuf_item

  • et_cuf_acc = it_cuf_acc.

IF NOT t_sc_messages[] IS INITIAL.

  • message handling

CALL FUNCTION 'BBP_BS_ADD_MESSAGES'

IMPORTING

ev_abort = lv_abort

TABLES

it_messages = t_sc_messages.

ENDIF.

  • if error occured set alert/ exception.

IF NOT lv_abort IS INITIAL.

CALL FUNCTION 'BBP_ALERT_SB_LOCAL'

EXPORTING

msgid = 'BBP_PU'

msgno = 326

msgarg1 = lv_msarg

EXCEPTIONS

invalid_parameters = 1

OTHERS = 2.

  • RAISE internal_error.

ENDIF.

  • End insert 03/26/2003

  • ReqReferences doesn't list the PO item number. We'll need that to

  • associate the WBS to a Service Sub Item later. Let's put it in.

SORT reqreferences BY client refnumber reqlline.

LOOP AT reqreferences INTO x_reqreferences.

IF x_reqreferences-refline IS INITIAL.

IF l_requis_number = x_reqreferences-refnumber. "jms 022802

ADD 1 TO line_item.

ELSE.

l_requis_number = x_reqreferences-refnumber. "jms 022802

line_item = 1.

ENDIF.

  • Accumulate the line item

x_reqreferences-refline = line_item.

MODIFY reqreferences FROM x_reqreferences INDEX sy-tabix.

ENDIF.

ENDLOOP.

SORT reqlines BY client reqno reqlline.

SORT reqreferences BY client reqno reqlline counter.

SORT reqlinemas BY client reqno reqsline reqlline.

SORT reqlinesrs BY client reqno reqsline reqlline.

SORT reqaccts BY client reqno reqlline serial_no. " note 359605

CLEAR: h_preq_item.

CLEAR: h_srv_item, h_srv_outl_created,

h_packno_item, h_packno_srv, h_introw.

  • First, the Shopping Cart number should be extracted from REQREF table

  • based on the Req number.

  • take all items with the specific reference number

LOOP AT reqreferences

INTO l_reqreferences "iok 091701

WHERE refnumber EQ requis_number.

  • if logical_system is initial.

  • logical_system = l_reqreferences-logical_system.

  • endif.

MOVE-CORRESPONDING l_reqreferences TO longkey.

  • read table reqlines with key longkey binary search.

READ TABLE reqlines INTO l_reqlines "iok 091701

WITH KEY client = longkey-client

reqno = longkey-reqno

reqlline = longkey-reqlline

BINARY SEARCH.

CHECK sy-subrc EQ 0.

h_preq_item = l_reqlines-reqsline+5(5).

  • clear h_preq_item.

  • Change line_type based on Material Group

  • add code here later.

CLEAR: f_change_required,

f_mat_sr_change,

f_limit_change.

SELECT SINGLE category_id

INTO l_mat_group

FROM comm_category

WHERE category_guid = l_reqlines-category.

  • Check if Services Special Request

IF l_reqlines-catalogid IS INITIAL AND

l_reqlines-product IS INITIAL AND

l_mat_group(1) = 'S' AND

l_reqlines-line_type = '1'. "Service Special Request

  • Set flags for future processing

l_reqlines-line_type = '3'.

f_change_required = 'X'.

f_limit_change = 'X'.

  • Check if Material Special Request

ELSEIF l_reqlines-catalogid IS INITIAL AND

l_reqlines-product IS INITIAL AND

l_mat_group(1) <> 'S' AND

l_reqlines-line_type = '1'. "Material Special Request

  • Set flags for future processing

f_change_required = 'X'.

f_mat_sr_change = 'X'.

ENDIF.

CHECK f_change_required = 'X'.

  • For Material Special Requests only need to select and store UNSPSC

  • code -- iok 092401

IF f_mat_sr_change = 'X'.

  • Get UNSPSC code (first hit) based on Material Group and store

  • in text id B05. iok 092101

READ TABLE req_items INTO l_req_items

WITH KEY preq_item = h_preq_item

mat_grp = l_mat_group.

READ TABLE req_item_text INTO l_req_item_text

WITH KEY preq_no = requis_number

preq_item = l_req_items-preq_item

text_id = 'B05'.

IF sy-subrc <> 0.

CLEAR l_req_item_text.

  • Find a UNSPSC Code from a Material Group .. even it's arbitrary

SELECT unspsc_code UP TO 1 ROWS

FROM zxl8_category_id

INTO l_req_item_text-text_line

WHERE category_id = l_mat_group.

ENDSELECT.

  • If nothing found then fill in a dummy UNSPSC. The first

  • letter of the Material will designate whether it's a Material

  • or Service.

IF sy-subrc NE 0.

  • Move the Material Group value into a holding variable

CONCATENATE l_mat_group(1) 'XXXXXXXX'

INTO l_req_item_text-text_line.

ENDIF.

l_req_item_text-preq_no = requis_number.

l_req_item_text-preq_item = l_req_items-preq_item.

l_req_item_text-text_id = 'B05'.

INSERT l_req_item_text INTO TABLE req_item_text.

ENDIF.

CONTINUE. "to next item.

ENDIF.

IF f_first_change = 'X' AND f_limit_change = 'X'.

  • Save old P.Req. data and clear tables

old_req_items[] = req_items[].

old_req_item_account[] = req_item_account[].

old_req_item_text[] = req_item_text[].

old_req_limits[] = req_limits[].

old_req_contract_limits[] = req_contract_limits[].

old_req_services[] = req_services[].

old_req_serv_account[] = req_serv_account[].

old_req_serv_text[] = req_serv_text[].

old_req_addrdelivery[] = req_addrdelivery[].

REFRESH: req_items,

req_item_account,

  • req_item_text,

req_limits,

req_contract_limits,

req_services,

req_serv_account,

req_serv_text.

  • req_addrdelivery.

CLEAR f_first_change.

ENDIF.

  • Limit

IF l_reqlines-line_type EQ '3'.

  • and not reqheaders-limit is initial.

DATA: l_reqreferences_temp TYPE reqreferences_type.

  • +JMS 2/26/2002

CLEAR l_reqreferences_temp.

READ TABLE reqreferences INTO l_reqreferences_temp

WITH KEY client = longkey-client

reqno = longkey-reqno

reqlline = longkey-reqlline

BINARY SEARCH.

IF sy-subrc = 0.

h_preq_item = l_reqreferences_temp-refline.

ENDIF.

CLEAR l_req_items.

READ TABLE old_req_items INTO l_req_items

WITH KEY preq_item = h_preq_item.

MOVE-CORRESPONDING l_req_items TO reqheaders.

reqheaders-begdate = l_req_items-deliv_date.

reqheaders-limit = l_req_items-c_amt_bapi.

reqheaders-exp_value = l_req_items-c_amt_bapi.

reqheaders-gr_ind = 'X'.

reqheaders-reqno = l_req_items-preq_no. "jms 022602

CLEAR l_req_items.

        • INSERT FORM **** CREATE_SERVICE_ITEM

h_packno_item = h_packno_item + 1.

h_packno_srv = h_packno_srv + 10000.

h_introw = h_introw + 1.

CLEAR l_req_items. " Note 364396

MOVE-CORRESPONDING reqheaders TO l_req_items.

l_req_items-preq_no = reqheaders-reqno. "jms 022602

  • l_REQ_ITEMS-PREQ_NO = REQUIS_NUMBER. "jms 022602

  • l_REQ_ITEMS-PREQ_ITEM = H_PREQ_ITEM + 1. "iok 091801

l_req_items-preq_item = h_preq_item. "iok 091801

l_current_item = h_preq_item. "iok 092101

h_srv_item = l_req_items-preq_item.

h_preq_item = h_preq_item + 1.

IF NOT reqheaders-limit IS INITIAL OR

NOT reqheaders-exp_value IS INITIAL.

IF reqheaders-gr_ind IS INITIAL.

l_req_items-item_cat = '1'.

ELSE.

l_req_items-item_cat = '9'.

ENDIF.

l_req_items-deliv_date = reqheaders-begdate.

ELSE.

l_req_items-item_cat = '9'.

ENDIF.

IF l_req_items-del_datcat IS INITIAL.

l_req_items-del_datcat = '1'.

ENDIF.

l_req_items-quantity = 1.

l_req_items-pckg_no = h_packno_item.

IF l_req_items-preq_name EQ space.

l_req_items-preq_name = sy-uname.

ENDIF.

APPEND l_req_items TO req_items.

        • END OF FORM INSERTION ********

l_req_limits-pckg_no = h_packno_item.

l_req_limits-limit = reqheaders-limit.

l_req_limits-exp_value = reqheaders-exp_value.

l_req_limits-no_limit = reqheaders-no_limit.

l_req_limits-no_frlimit = 'X'.

APPEND l_req_limits TO req_limits.

*.... Account assignment

  • clear requisition_srv_accass_values.

CLEAR l_req_serv_account.

l_req_serv_account-pckg_no = h_packno_item.

MOVE-CORRESPONDING l_reqlines TO longkey.

  • read table reqaccts with key longkey binary search. "iok 091801

READ TABLE reqaccts INTO l_reqaccts "iok 091801

WITH KEY client = longkey-client

reqno = longkey-reqno

reqlline = longkey-reqlline

BINARY SEARCH.

IF sy-subrc = 0.

LOOP AT reqaccts

INTO l_reqaccts

WHERE reqno = l_reqreferences-reqno

AND reqlline = l_reqreferences-reqlline.

              • INSERT FULL FORM *********** FILL_REQ_ACCT_SRV

DATA: acctcomp1 TYPE bapiebkn,

acctcomp2 TYPE bapiebkn,

high_serial TYPE dzekkn. "LIKE BAPIEKKN-SERIAL_NO.

CLEAR l_req_serv_account-serial_no.

CLEAR acctcomp1.

MOVE-CORRESPONDING l_reqaccts TO acctcomp1.

CLEAR: acctcomp1-preq_no,

acctcomp1-preq_item,

acctcomp1-serial_no,

acctcomp1-created_on,

acctcomp1-created_by,

acctcomp1-preq_qty,

acctcomp1-distr_perc,

acctcomp1-change_id,

acctcomp1-currency.

LOOP AT req_item_account INTO l_req_item_account.

CLEAR acctcomp2.

  • MOVE-CORRESPONDING l_req_item_account TO ACCTCOMP2. "is blank

CLEAR: acctcomp2-preq_no,

acctcomp2-preq_item,

acctcomp2-serial_no,

acctcomp2-created_on,

acctcomp2-created_by,

acctcomp2-preq_qty,

acctcomp2-distr_perc,

acctcomp2-change_id,

acctcomp2-currency.

IF acctcomp1 EQ acctcomp2 AND h_srv_outl_created IS INITIAL.

l_req_serv_account-serial_no = l_req_item_account-serial_no.

EXIT.

ENDIF.

high_serial = l_req_item_account-serial_no.

ENDLOOP.

h_srv_outl_created = ' '.

IF l_req_serv_account-serial_no IS INITIAL.

MOVE-CORRESPONDING l_reqaccts TO l_req_item_account.

  • l_REQ_item_ACCOUNT-PREQ_NO = REQUIS_NUMBER. "jms 022702

l_req_item_account-preq_no = l_req_items-preq_no."jms 022702

l_req_item_account-preq_item = h_srv_item.

  • REQUISITION_ACCOUNT_ASSIGNMENT-WBS_ELEM_E = REQACCT-BBP_PROJECT.

l_req_item_account-serial_no = high_serial + 1.

l_req_serv_account-serial_no = l_req_item_account-serial_no.

APPEND l_req_item_account TO req_item_account.

ENDIF.

                • END OF FORM INSERTION ***********

h_serial_no = h_serial_no + 1.

l_req_serv_account-serno_line = h_serial_no.

l_req_serv_account-percentage = l_reqaccts-distr_perc.

APPEND l_req_serv_account TO req_serv_account.

ENDLOOP.

              • INSERT FULL FORM **************** CONVERT_ACCOUNT_ASS_CAT

  • data: account_tab LIKE bbp_pds_acc OCCURS 0 WITH HEADER LINE.

DATA: account_tab TYPE STANDARD TABLE OF bbp_pds_acc.

DATA: l_account_tab TYPE bbp_pds_acc.

DATA: h_knttp TYPE knttp.

  • move the accounting data to that item into the interface table

LOOP AT reqaccts

INTO l_reqaccts

WHERE reqno EQ l_reqreferences-reqno

AND reqlline EQ l_reqreferences-reqlline.

MOVE-CORRESPONDING l_reqaccts TO l_account_tab.

APPEND l_account_tab TO account_tab.

ENDLOOP.

  • call the convert API

CALL FUNCTION 'BBP_ACCCAT_MAP_EXP'

EXPORTING

i_logical_system = logical_system

IMPORTING

e_r3_acc_cat = h_knttp

TABLES

i_pd_account = account_tab.

IF h_knttp IS INITIAL.

h_knttp = 'X'.

ENDIF.

  • +JMS 2/14/2002 Issue #1590

CLEAR account_tab.

REFRESH account_tab.

  • account assignment category - set in the correct item

LOOP AT req_items

INTO l_req_items

WHERE preq_item EQ l_req_item_account-preq_item.

l_req_items-acctasscat = h_knttp.

MODIFY req_items FROM l_req_items INDEX sy-tabix.

ENDLOOP.

          • END OF FORM INSERTION ************

ELSE.

          • INSERT FULL FORM ************* Form CONVERT_ACCOUNT_ASS_CAT_U

LOOP AT req_items

INTO l_req_items

WHERE preq_item EQ l_current_item.

l_req_items-acctasscat = 'U'.

MODIFY req_items FROM l_req_items INDEX sy-tabix.

ENDLOOP.

          • END OF FORM INSERTION ************

ENDIF.

  • Get UNSPSC code (first hit) based on Material Group and store

  • in text id B05. iok 092101

READ TABLE req_items INTO l_req_items

WITH KEY preq_item = l_current_item

mat_grp = l_mat_group.

READ TABLE req_item_text INTO l_req_item_text

WITH KEY preq_no = requis_number

preq_item = l_req_items-preq_item

text_id = 'B05'.

IF sy-subrc <> 0.

CLEAR l_req_item_text.

  • Get UNSPSC Code from Material Group .. even if arbitrary

SELECT unspsc_code UP TO 1 ROWS

FROM zxl8_category_id

INTO l_req_item_text-text_line

WHERE category_id = l_mat_group.

ENDSELECT.

  • If nothing found then fill in a dummy UNSPSC. The first

  • letter of the Material will designate whether it's a Material

  • or Service.

IF sy-subrc NE 0.

  • Move the Material Group value into a holding variable

CONCATENATE l_mat_group(1) 'XXXXXXX'

INTO l_req_item_text-text_line.

ENDIF.

l_req_item_text-preq_no = requis_number.

l_req_item_text-preq_item = l_req_items-preq_item.

l_req_item_text-text_id = 'B05'.

INSERT l_req_item_text INTO TABLE req_item_text.

ENDIF.

    • Don't send Internal Note to Backend

  • delete req_item_text where text_id = 'B02'.

  • Service -- NOT NEEDED -- IOK 07/13/01

  • elseif not reqlines-reqsline is initial

  • and reqlines-line_type eq '2'.

  • move-corresponding reqlines to shortkey.

  • read table reqlinesrs with key shortkey binary search.

  • if sy-subrc = 0.

  • h_serv = reqlinesrs.

  • append h_serv.

  • endif.

  • material item -- NOT NEEDED -- IOK 07/13/01

ENDIF.

ENDLOOP.

    • Services -- NOT NEED -- IOK 07/13/01

IF f_limit_change = 'X'.

  • Check multiple account assignment

LOOP AT req_items INTO l_req_items.

h_index = sy-tabix.

CLEAR next.

LOOP AT req_item_account

INTO l_req_item_account

WHERE preq_item EQ l_req_items-preq_item.

next = next + 1.

ENDLOOP.

IF next > 1.

l_req_items-distrib = '2'. "prozentuale Verteilung

l_req_items-part_inv = '1'.

l_req_items-gr_non_val = 'X'.

MODIFY req_items FROM l_req_items INDEX h_index. "217191

  • modify requisition_items. "217191

ENDIF.

ENDLOOP.

ENDIF.

  • Remap delivery address for backend processing

LOOP AT req_addrdelivery INTO l_req_addrdelivery.

MOVE: l_req_addrdelivery-name_2 TO l_req_addrdelivery-name,

l_req_addrdelivery-c_o_name TO l_req_addrdelivery-name_2.

CLEAR: l_req_addrdelivery-c_o_name.

MODIFY req_addrdelivery FROM l_req_addrdelivery INDEX sy-tabix.

ENDLOOP.

  • CHM 07/16/2003 Changed created by to always be actual creator even

  • for on behalf of situations

LOOP AT req_items

INTO l_req_items.

l_req_items-created_by = x_sc_header-created_by.

MODIFY req_items FROM l_req_items INDEX sy-tabix.

ENDLOOP.

  • CMH - end change

    • MA 12/10/04 - Pass MP2 number from Manu Prod# to Req Item Text

  • LOOP AT req_items INTO l_req_items.

  • READ TABLE t_sc_item into x_sc_item

  • WITH KEY number_int = l_req_items-preq_item.

  • l_req_item_text-preq_no = requis_number.

  • l_req_item_text-preq_item = l_req_items-preq_item.

  • l_req_item_text-text_id = 'B06'.

  • l_req_item_text-text_line = x_sc_item-manu_prod.

  • INSERT l_req_item_text INTO TABLE req_item_text.

  • ENDLOOP.

ENDMETHOD.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Any help guys?

Thanks

Manyam