Skip to Content
0
Former Member
Feb 16, 2011 at 12:38 PM

Enhancement-ABAP Code-Customized Field issue

69 Views

Hi Experts,

Currently I am working on the BW3.5 version. We are using the standard SRM standard extractor 0BBP_TD_SC_1 and we enhance same extractor(populate the filed through CMOD - ABAP Code) with one customized field also. We are having issue on the customized field data which post from SRM system. I have verified the field value and value is fine in RSA3 in SRM source system. But while posting into the BW(PSA itself), its loading correct & wrong value. When i check the PSA for the particular load, It looks little strange. In the PSA, I can see correct value on my first record of the same SC and then next records has incorrect value of the same SC. Currently I am using the ODS as a data target. So finally i am getting the incorrect value on the customized field.

Ex Scenario:

Ex Customized Field: ZORGID

In SRM source system RSA3 Extractor Checker value:

Shopping Card No: 100

Customized Field: ZORGID=1

Shopping Card No: 200

Customized Field: ZORGID=2

In BW posting-PSA:

Shopping Card No: 100

Customized Field: ZORGID=2

Shopping Card No: 200

Customized Field: ZORGID=2

At the same time, if i do the selective deletion of the particular Shopping Card or group of SC in BW and do the full repair, then it gets a correct ZORGID=1 for the same Shopping Card.

I strongly believe, something wrong in the ABAP code. But when we tried to debug the customized filed value in RSA3. The value is fine. so we unable to trace out the issue. Please help me to fix the code. Thanks in advance.

CMOD ABAP Code:

*Populate approver ID even though it doesn't require approval this is required to make sure BW reports have restrict access to respective Org Unit approvals only

IF l_s_bbp_sc-approver_id IS INITIAL AND l_s_bbp_sc-itm_guid IS NOT INITIAL.

CALL FUNCTION 'Z_BBP_FIRST_APPROVALGET'

EXPORTING

iv_header_guid = l_s_bbp_sc-guid

iv_itm_guid = l_s_bbp_sc-itm_guid

IMPORTING

approver_no = l_s_bbp_sc-approver_id

EXCEPTIONS

no_data = 1

OTHERS = 2

.

IF sy-subrc 0.

ENDIF.

ENDIF.

  • To ensure that the Org Unit passed in into the field

  • l_s_bbp_sc-zzapprov_orgunit belongs to the Actual Level 1

  • Budget Owner and not any other manager such as Added Approver.

*

CLEAR : ls_ln_approvers, l_userid, lv_bpartner_guid.

DATA : lv_f_apprv_part TYPE BU_PARTNER.

READ TABLE lt_ln_approvers INTO ls_ln_approvers

WITH KEY INITIAL_INDEX = '0000000001'.

IF sy-subrc EQ 0.

MOVE ls_ln_approvers-approval_agent+2(12) TO l_userid.

CALL FUNCTION 'BP_CENTRALPERSON_GET'

EXPORTING

iv_username = l_userid

IMPORTING

ev_bu_partner_guid = lv_bpartner_guid

EXCEPTIONS

no_central_person = 1

no_business_partner = 2

no_id = 3

OTHERS = 4.

IF sy-subrc = 0.

CALL FUNCTION 'BUPA_NUMBERS_GET'

EXPORTING

iv_partner_guid = lv_bpartner_guid

IMPORTING

ev_partner = lv_f_apprv_part.

ENDIF.

ENDIF.

  • We get the BP number of the first Budget Owner 1

  • Here, we superseed the field l_s_bbp_sc-approver_id

  • whereby it may be wrong due to Added Approver.

  • IF l_s_bbp_sc-approver_id IS NOT INITIAL.

IF lv_f_apprv_part IS NOT INITIAL.

IF l_s_bbp_sc-itm_guid IS NOT INITIAL.

CALL FUNCTION 'RH_STRUC_GET'

EXPORTING

act_otype = 'BP'

act_objid = lv_f_apprv_part

act_wegid = 'EBP-UP'

act_begda = sy-datum

act_endda = sy-datum

act_tdepth = 4

TABLES

result_tab = lt_result_tab

EXCEPTIONS

no_plvar_found = 1

no_entry_found = 2

OTHERS = 3

.

IF sy-subrc = 0.

READ TABLE lt_result_tab INTO ls_result_tab WITH KEY

otype = 'O'.

IF sy-subrc EQ 0.

l_s_bbp_sc-zzapprov_orgunit = ls_result_tab-objid.

ELSE.

ENDIF.

ENDIF.

ENDIF.

Thanks,

RR