Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to use the function module /IRM/IPBB_AGREEMENT_CREATE.

0 Kudos

Hi all,

Please help me how to use the function module /IRM/IPBB_AGREEMENT_CREATE.

It is a Vistex fuction module which is used to create Sales contract in SAP-Vistex. If anyone has use the function module and do have the sample code please share it.

Thanks.

2 REPLIES 2

Former Member
0 Kudos

Have you come up with some sample code? I am also trying to use it and wouldn't mind a little guidance.

0 Kudos

FORM create_agreement TABLES pt_agreement

CHANGING po_agreement .

CONSTANTS: c_strt_knumh TYPE knumh VALUE '0000000000'.

DATA: lc_kona TYPE /irm/s_gkona,

lc_cbasp TYPE /irm/s_ipcbasp,

lt_cbapr TYPE /irm/t_ipcbapr, "Partners

lc_cbapr TYPE /irm/s_ipcbapr,

lt_cbadt TYPE /irm/t_ipcbadt, "Dates

lc_cbadt TYPE /irm/s_ipcbadt,

lt_cbafs TYPE /irm/t_ipcbafs,

lc_cbafs TYPE /irm/s_ipcbafs,

lt_cbacn TYPE /irm/t_ipcbacn,

lc_cbacn TYPE /irm/s_ipcbacn,

lt_cbacl TYPE /irm/t_ipcbacl,

lc_cbacl TYPE /irm/s_ipcbacl,

lt_cbtpv TYPE /irm/t_ipagtpv,

lc_cbtpv TYPE /irm/s_ipagtpv,

lt_texts TYPE text_lh,

lc_texts TYPE itclh,

lt_cbasd TYPE /irm/t_ipcbasd,

lc_cbasd TYPE /irm/s_ipcbasd,

lc_agreement TYPE /irm/s_ipcbasp_doc,

lc_e_log_number TYPE balognr,

lt_messages TYPE /irm/t_gprolog.

DATA: lt_vake TYPE cond_vakevb_t,

lc_vake TYPE LINE OF cond_vakevb_t,

lt_konh TYPE /irm/t_gkonh,

lc_konh TYPE LINE OF /irm/t_gkonh,

lt_konp TYPE /irm/t_gkonp,

lc_konp TYPE LINE OF /irm/t_gkonp,

lt_konw TYPE /irm/t_gkonwu,

lc_konw TYPE LINE OF /irm/t_gkonwu,

lt_konm TYPE /irm/t_gkonmu,

lc_konm TYPE LINE OF /irm/t_gkonmu,

lt_komg TYPE /irm/t_gkomg_index,

lc_komg TYPE LINE OF /irm/t_gkomg_index,

lt_user_data TYPE /irm/t_gpraxfu_index,

lc_user_data TYPE LINE OF /irm/t_gpraxfu_index.

DATA: lc_updt(1) TYPE c.

DATA: lc_knumh TYPE knumh.

DATA: BEGIN OF lc_str_knumh,

hd(2) TYPE c VALUE '$$',

inc_num(8) TYPE c,

END OF lc_str_knumh.

DATA: blank_agree_key TYPE knuma VALUE '~~~~~~~~~~'.

FIELD-SYMBOLS <konh_line> LIKE LINE OF lt_konh.

FIELD-SYMBOLS <konp_line> LIKE LINE OF lt_konp.

DATA: lc_rule TYPE type_key_rule.

READ TABLE pt_agreement INTO lc_rule INDEX 1.

  • SELECT SINGLE * FROM kona

  • WHERE vkorg = lc_rule-vkorg

  • AND vtweg = '10'

  • AND spart = '10'

  • AND boart = 'ZPS1'

  • AND botext = lc_rule-sap_agkey.

  • IF sy-subrc = 0.

  • lc_updt = 'U'.

  • ELSE.

lc_updt = 'I'.

  • ENDIF.

LOOP AT pt_agreement INTO lc_rule.

MOVE sy-tabix TO lc_str_knumh-inc_num.

CONDENSE lc_str_knumh-inc_num NO-GAPS.

WHILE lc_str_knumh-inc_num+7(1) = ' '.

CONCATENATE '0' lc_str_knumh-inc_num INTO lc_str_knumh-inc_num.

CONDENSE lc_str_knumh-inc_num NO-GAPS.

ENDWHILE.

CONCATENATE '$$' lc_knumh INTO lc_knumh.

MOVE lc_str_knumh TO lc_knumh.

  • MOVE c_strt_knumh TO lc_knumh.

CLEAR: lc_konh, lc_konp, lc_komg.

MOVE: lc_rule-vkorg TO lc_komg-komg-vkorg,

'10' TO lc_komg-komg-vtweg,

'10' TO lc_komg-komg-spart,

p_waers TO lc_komg-komg-waerk,

'1300' TO lc_komg-komg-bukrs,

lc_rule-lifnr TO lc_komg-komg-lifnr,

lc_knumh TO lc_komg-knumh,

lc_knumh TO lc_konh-knumh,

lc_knumh TO lc_konp-knumh,

lc_rule-datab TO lc_konh-datab,

lc_rule-datbi TO lc_konh-datbi.

CASE lc_rule-tablnam.

WHEN 'A701'. "Every Agreement will have a A701 rule -

"Therefore we acn setup the header using A701

MOVE: 'New ' TO lc_kona-knuma,

lc_rule-vkorg TO lc_kona-vkorg,

'10' TO lc_kona-vtweg,

'10' TO lc_kona-spart,

'ZPS1' TO lc_kona-boart,

'C' TO lc_kona-abtyp,

'V' TO lc_kona-kappl,

p_waers TO lc_kona-waers,

lc_rule-knuma_ag TO lc_kona-abrex,

'ZPS2' TO lc_kona-kobog,

lc_rule-datab TO lc_kona-datab,

lc_rule-datbi TO lc_kona-datbi,

lc_rule-sap_agkey TO lc_kona-botext,

'1300' TO lc_kona-bukrs,

'I' TO lc_kona-updkz.

MOVE: 'New ' TO lc_cbasp-knuma_ag,

'ZPS1' TO lc_cbasp-boart_ag,

p_waers TO lc_cbasp-waers,

'A' TO lc_cbasp-setl_mth,

'B' TO lc_cbasp-setl_typ,

'A2' TO lc_cbasp-ident,

'E' TO lc_cbasp-setlm,

'ZPDA' TO lc_cbasp-pargr,

'X' TO lc_cbasp-npric,

'LF' TO lc_cbasp-stprl,

lc_rule-lifnr TO lc_cbasp-stpar,

lc_rule-contract_rev TO lc_cbasp-rvnum,

'I' TO lc_cbasp-updkz.

CONCATENATE: blank_agree_key

lc_rule-lifnr INTO lc_konh-vakey.

MOVE: lc_rule-lifnr TO lc_konp-lifnr.

WHEN 'A703'.

CONCATENATE: blank_agree_key

lc_rule-kunnr INTO lc_konh-vakey.

MOVE lc_rule-kunnr TO lc_komg-komg-kunnr.

WHEN 'A709'.

CONCATENATE: blank_agree_key

lc_rule-zzprodh1 lc_rule-zzprodh2 lc_rule-zzprodh3

lc_rule-zzprodh4 lc_rule-zzprodh5 INTO lc_konh-vakey.

CONCATENATE: lc_rule-zzprodh1 lc_rule-zzprodh2 lc_rule-zzprodh3

lc_rule-zzprodh4 lc_rule-zzprodh5 INTO lc_komg-komg-prodh.

WHEN 'A710'.

CONCATENATE: blank_agree_key

lc_rule-matkl INTO lc_konh-vakey.

MOVE lc_rule-matkl TO lc_komg-komg-matkl.

WHEN 'A711'.

CONCATENATE: blank_agree_key

lc_rule-matnr INTO lc_konh-vakey.

MOVE lc_rule-matnr TO lc_komg-komg-matnr.

IF lc_rule-kschl = 'ZPPL'.

MOVE: 'C' TO lc_konp-krech,

'CAD' TO lc_konp-konwa.

lc_konp-kbetr = lc_rule-net_po_price * 1.

ENDIF.

WHEN 'A717'.

WHEN 'A718'.

CONCATENATE: blank_agree_key

lc_rule-zzextwg INTO lc_konh-vakey.

MOVE lc_rule-zzextwg TO lc_komg-komg-zzextwg.

  • WHEN 'A719'.

  • CONCATENATE: blank_agree_key

  • lc_rule-werks INTO lc_konh-vakey.

  • MOVE lc_rule-werks TO lc_komg-komg-werks.

  • WHEN 'A721'.

  • CONCATENATE: blank_agree_key

  • lc_rule-kunnr lc_rule-werks INTO lc_konh-vakey.

  • MOVE: lc_rule-kunnr TO lc_konp-kunnr,

  • lc_rule-kunnr TO lc_komg-komg-kunnr.

WHEN 'A722'.

CONCATENATE: blank_agree_key

lc_rule-vkbur INTO lc_konh-vakey.

MOVE lc_rule-vkbur TO lc_komg-komg-vkbur.

WHEN 'A724'.

CONCATENATE: blank_agree_key

lc_rule-kunnr lc_rule-vkbur INTO lc_konh-vakey.

MOVE: lc_rule-kunnr TO lc_konp-kunnr,

lc_rule-kunnr TO lc_komg-komg-kunnr,

lc_rule-vkbur TO lc_komg-komg-vkbur.

ENDCASE.

MOVE: 'A' TO lc_konh-kvewe,

lc_rule-tablnam+1(3) TO lc_konh-kotabnr,

lc_rule-kappl TO lc_konh-kappl,

lc_rule-kschl TO lc_konh-kschl.

REPLACE ALL OCCURRENCES OF '~' IN lc_konh-vakey WITH ' '.

APPEND lc_konh TO lt_konh.

CLEAR lc_konh.

*--- Add in the KONP.Do we need to add

MOVE: lc_rule-kappl TO lc_konp-kappl,

lc_rule-kschl TO lc_konp-kschl,

'G' TO lc_konp-krech.

IF lc_rule-kschl+3(1) = '%'.

MOVE: 'A' TO lc_konp-krech,

'%' TO lc_konp-konwa.

lc_konp-kbetr = lc_rule-rebate_perc * 1.

ENDIF.

APPEND lc_konp TO lt_konp. CLEAR lc_konp.

APPEND lc_komg TO lt_komg. CLEAR lc_komg.

ENDLOOP.

IF lc_updt = 'I'.

CALL FUNCTION '/IRM/IPCB_AGREEMENT_CREATE'

EXPORTING

  • I_MESSAGES_DISPLAY = ' '

  • I_SAVE_MESSAGES = ' '

  • I_COMMIT_WORK = 'X'

  • I_CALL_FROM_WS = ' '

is_kona = lc_kona

is_cbasp = lc_cbasp

it_cbapr = lt_cbapr

it_cbadt = lt_cbadt

it_cbafs = lt_cbafs

it_cbacn = lt_cbacn

it_cbacl = lt_cbacl

it_cbtpv = lt_cbtpv

it_texts = lt_texts

it_cbasd = lt_cbasd

IMPORTING

es_agreement = lc_agreement

e_log_number = lc_e_log_number

TABLES

t_messages = lt_messages

  • CHANGING

  • CT_VAKE = lt_vake

  • ct_konh = lt_konh

  • ct_konp = lt_konp

  • CT_KONW = lt_konw

  • CT_KONM = lt_konm

  • ct_komg = lt_komg

  • CT_USER_DATA = lt_usr_data

EXCEPTIONS

no_documents_to_process = 1

no_authorization = 2

creation_failed = 3

new_pricing_not_maitained = 4

OTHERS = 5.

IF sy-subrc <> 0.

  • Implement suitable error handling here

ELSE.

MOVE: lc_agreement-knuma_ag TO po_agreement,

lc_agreement-knuma_ag TO lc_kona-knuma.

ENDIF.

APPEND LINES OF lt_messages TO gt_messages.

ELSE.

MOVE-CORRESPONDING kona TO lc_kona.

ENDIF.

LOOP AT lt_konh ASSIGNING <konh_line>.

MOVE lc_kona-knuma TO <konh_line>-vakey+0(10).

  • move '&' to <konh_line>-knumh+0(1).

ENDLOOP.

LOOP AT lt_konp ASSIGNING <konp_line>.

  • MOVE lc_kona-knuma TO <konp_line>-vakey+0(10).

  • move '&' to <konh_line>-knumh+0(1).

ENDLOOP.

lc_kona-updkz = 'U'.

lc_cbasp-updkz = 'U'.

CLEAR lt_messages.

CALL FUNCTION '/IRM/IPCB_AGREEMENT_CHANGE'

EXPORTING

    • I_MESSAGES_DISPLAY = ' '

    • I_SAVE_MESSAGES = ' '

    • I_COMMIT_WORK = 'X'

    • I_INIT_DATA = 'X'

is_kona = lc_kona

is_cbasp = lc_cbasp

  • it_cbapr = lt_cbapr

  • it_cbadt = lt_cbadt

  • it_cbafs = lt_cbafs

  • it_cbacl = lt_cbacl

  • it_cbacn = lt_cbacn

    • IT_FIELDS =

  • it_texts = lt_texts

  • IMPORTING

  • e_log_number = lc_e_log_number

TABLES

t_messages = lt_messages

CHANGING

cs_agreement = lc_agreement

    • CT_VAKE = lt_vake

ct_konh = lt_konh

ct_konp = lt_konp

    • CT_KONW = lt_konw

    • CT_KONM = lt_konm

ct_komg = lt_komg

    • CT_USER_DATA = lt_usr_data

EXCEPTIONS

no_documents_to_process = 1

no_authorization = 2

change_failed = 3

agreement_locked = 4

OTHERS = 5.

  • IF sy-subrc <> 0.

    • Implement suitable error handling here

  • ENDIF.

APPEND LINES OF lt_messages TO gt_messages.

ENDFORM. " CREATE_AGREEMENT