Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
sunil_yadav2
Active Contributor

Purpose

CJIC (Display Project Settlement Line Item) is used to create line item settlement rules. In this transaction, user is able to create settlement rule per line item or by selecting all line item and create one settlement rule for all.

Now, we got requirement to Automate this process where user will give Excel file with data and settlement Rule will be created accordingly.

Information

For this requirement, we have created BDC recording as follows:

Transaction Code- SHDB

Click Start Recording

Enter WBS Element as per above screen

and Execute

Select Line item

click Final Settlement and enter details as below

click back

line item will be displayed as Green and then Save

Now check below BDC recording output. this needs to be used by ABAP Consultant.

0000TCJIC                                                                                                                            
RKPEP012                             1000X
0000BDC_CURSOR                                                                                                                       CN_PSPNR-LOW
0000BDC_OKCODE                                                                                                                       =ONLI
0000CN_PSPNR-LOW                                                                                                                     N-00002.001
0000P_AFABE                                                                                                                         1
0000P_DISVAR                                                                                                                         /RITESH-1
0000BDC_SUBSCR                                                                                                                       SAPLSSEL                                2001%_SUBSCREEN_%_SUB%_CONTAINER
0000BDC_SUBSCR                                                                                                                       SAPLSSEL                                2002SUBSCREEN_CONTAINER2
SAPMSSY0                             0120X
0000BDC_CURSOR                                                                                                                       04/03
0000BDC_OKCODE                                                                                                                       =BURG
SAPLKOBS                             0130X
0000BDC_CURSOR                                                                                                                       COBRB-PROZS(01)
0000BDC_OKCODE                                                                                                                       /00
0000COBRB-KONTY(01)                                                                                                                 FXA
0000DKOBR-EMPGE(01)                                                                                                                 42000000
0000COBRB-PROZS(01)                                                                                                                 100
0000BDC_SUBSCR                                                                                                                       SAPLKOBS                                0205BLOCK1
SAPLKOBS                             0130X
0000BDC_CURSOR                                                                                                                       COBRB-KONTY(01)
0000BDC_OKCODE                                                                                                                       =BACK
0000BDC_SUBSCR                                                                                                                       SAPLKOBS                                0205BLOCK1
SAPMSSY0                             0120X
0000BDC_CURSOR                                                                                                                       04/03
0000BDC_OKCODE                                                                                                                       =BSAV

Now ABAP Consultant will work and complete the program.

Please check below program to updated by ABAP Person (Courtesy: Mr. Sadruz Ansari):

REPORT ZPS_CJIC_SETTLEMENT_RULE. "       no standard page heading line-size 255.

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

         DUMMY(100) TYPE C,

       END OF IT_DUMMY.

TYPES : BEGIN OF IT_CJIC ,

          PSPNR TYPE PRPS_R-POSID,    " WBS Number

          KONTY TYPE TBO01-OBART_LD,  "Account assignment category

          EMPGE TYPE DKOBR-EMPGE,     "Fixed Assets Number

          REFBN TYPE KAEP_COAC-REFBN, "Reference Document Number

          MATNR TYPE KAEP_COEP_X-MATNR,  " material No.

          REFBZ TYPE KAEP_COAC-REFBZ,  " Posting Row

        END OF IT_CJIC.

DATA : IT_BDCDATA     LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

       IT_BDCMSGCOLL  LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,

       WIT_BDCMSGCOLL TYPE BDCMSGCOLL.

TYPES:

   FS_STRUCT(4096) TYPE C OCCURS 0 .

DATA:

  W_STRUCT TYPE FS_STRUCT.

DATA:

  T_FIELD    TYPE STANDARD TABLE OF IT_CJIC,

  E_FIELD    TYPE STANDARD TABLE OF IT_CJIC,

  S_FIELD    TYPE STANDARD TABLE OF IT_CJIC,

  EXPORT_FLD TYPE STANDARD TABLE OF IT_CJIC,

  TR_FIELD   TYPE STANDARD TABLE OF IT_CJIC,

  T_BDCDATA  LIKE TABLE OF BDCDATA,

  T_LFBK     TYPE STANDARD TABLE OF LFBK,

  W_FIELD    TYPE IT_CJIC,

  W_LFBK     TYPE LFBK.

TYPES : BEGIN OF TY_CJIC ,

          BANKS     TYPE LFBK-BANKS,

          LIFNR(10) TYPE C,  

          BANKL     TYPE LFBK-BANKL,

          BANKN     TYPE LFBK-BANKN,

          KOINH     TYPE LFBK-KOINH,

          BKONT     TYPE LFBK-BKONT,

          BVTYP     TYPE LFBK-BVTYP,

          BKREF     TYPE LFBK-BKREF,

        END OF TY_CJIC.

DATA: IT_XK02 TYPE STANDARD TABLE OF TY_CJIC,

      IT_SUCC TYPE STANDARD TABLE OF TY_CJIC,

      WA_XK02 TYPE TY_CJIC.

PARAMETERS:

  P_FILE   TYPE RLGRAP-FILENAME.                  " File Path

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      PROGRAM_NAME  = SYST-CPROG

      DYNPRO_NUMBER = SYST-DYNNR

      FIELD_NAME    = ' '

    IMPORTING

      FILE_NAME     = P_FILE.

START-OF-SELECTION.

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

    EXPORTING

      I_FIELD_SEPERATOR    = 'X'

      I_LINE_HEADER        = 'X'

      I_TAB_RAW_DATA       = W_STRUCT

      I_FILENAME           = P_FILE

    TABLES

      I_TAB_CONVERTED_DATA = T_FIELD

    EXCEPTIONS

      CONVERSION_FAILED    = 1

      OTHERS               = 2.

  DATA : FNAM(20) TYPE C,

         IDX      TYPE CHAR3,

         IDX1     TYPE CHAR3,

         VAR      TYPE I,

         VAR1     TYPE I,

         CONTROL  TYPE CHAR5.

  IF NOT T_FIELD  IS INITIAL.

    EXPORT_FLD[] = T_FIELD[].

    EXPORT EXPORT_FLD TO MEMORY ID 'CJIC_FLD'.

    CONTROL  = 'B_CJIC'.

    EXPORT CONTROL TO  MEMORY ID 'BDC_CJIC'.

  ENDIF.

  LOOP AT T_FIELD INTO W_FIELD.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

      EXPORTING

        INPUT  = W_FIELD-MATNR

      IMPORTING

        OUTPUT = W_FIELD-MATNR.

    APPEND W_FIELD TO TR_FIELD.

    EXPORT TR_FIELD TO MEMORY ID 'CJIC_WA'.

    PERFORM BDC_DYNPRO      USING 'RKPEP012' '1000'.

    PERFORM BDC_FIELD       USING 'BDC_CURSOR'

                                  'CN_PSPNR-LOW'.

    PERFORM BDC_FIELD       USING 'BDC_OKCODE'

                                  '=ONLI'.

    PERFORM BDC_FIELD       USING 'CN_PSPNR-LOW'

                                  W_FIELD-PSPNR  .

**                                  'N-00002.001'.

    PERFORM BDC_FIELD       USING 'P_AFABE'

                                  ' 1'.

    PERFORM BDC_FIELD       USING 'P_DISVAR'

                                  '/RITESH-1'.

    PERFORM BDC_DYNPRO      USING 'SAPMSSY0' '0120'.

    PERFORM BDC_FIELD       USING 'BDC_CURSOR'

                                  '04/03'.

    PERFORM BDC_FIELD       USING 'BDC_OKCODE'

                                  '=BURG'.

    PERFORM BDC_DYNPRO      USING 'SAPLKOBS' '0130'.

    PERFORM BDC_FIELD       USING 'BDC_CURSOR'

                                  'COBRB-URZUO(01)'.

    PERFORM BDC_FIELD       USING 'BDC_OKCODE'

                                  '=BACK'.

    PERFORM BDC_FIELD       USING 'COBRB-KONTY(01)'

                                  W_FIELD-KONTY.

*                                  'fxa'.

    PERFORM BDC_FIELD       USING 'DKOBR-EMPGE(01)'

                                   W_FIELD-EMPGE.

    PERFORM BDC_FIELD       USING 'COBRB-PROZS(01)'

                                  '100'.

    PERFORM BDC_DYNPRO      USING 'SAPMSSY0' '0120'.

    PERFORM BDC_FIELD       USING 'BDC_CURSOR'

                                  '04/03'.

    PERFORM BDC_FIELD       USING 'BDC_OKCODE'

                                  '=BSAV'.

**

    CALL TRANSACTION 'CJIC' USING IT_BDCDATA

                            MODE  'N'

                            UPDATE 'S'

                            MESSAGES INTO IT_BDCMSGCOLL.

    IF SY-SUBRC = 0.

      APPEND W_FIELD TO S_FIELD    .

    ELSE.

      APPEND W_FIELD TO E_FIELD    .

    ENDIF.

    REFRESH: IT_BDCDATA.

    CLEAR: W_FIELD,TR_FIELD.

    FREE MEMORY ID 'CJIC_WA'.

  ENDLOOP.

  PERFORM MSG_DISPLAY.

FORM BDC_DYNPRO USING PROG SCR.

  CLEAR IT_BDCDATA.

  IT_BDCDATA-PROGRAM = PROG.

  IT_BDCDATA-DYNPRO  = SCR.

  IT_BDCDATA-DYNBEGIN = 'X'.

  APPEND IT_BDCDATA.

ENDFORM.                    "BDC_DYNPRO

FORM BDC_FIELD USING FNAM FVAL.

  CLEAR IT_BDCDATA.

  IT_BDCDATA-FNAM = FNAM.

  IT_BDCDATA-FVAL  = FVAL.

  APPEND IT_BDCDATA.

ENDFORM.                    "BDC_FIELD

FORM MSG_DISPLAY.

  IF NOT   S_FIELD IS   INITIAL.

    LOOP AT  S_FIELD INTO W_FIELD .

      WRITE: 'Success:: ', W_FIELD-REFBN,',', W_FIELD-MATNR,',',W_FIELD-REFBZ ,

             /.

    ENDLOOP.

  ENDIF.

  IF NOT E_FIELD IS INITIAL.

    LOOP AT  E_FIELD INTO W_FIELD .

      WRITE: 'Error:: ', W_FIELD-REFBN,',', W_FIELD-MATNR,',',W_FIELD-REFBZ ,

             /.

    ENDLOOP.

  ENDIF.

ENDFORM.                    " MSG_DISPLAY

Another Program we have to Update: LKAEPFIM

update "FORM IM_DIST_RULE_MAINTAIN USING    U_ATGVRG

                                     U_LISTE."



ENHANCEMENT ZCJIC_BDC.    "active version

****Added BY Sadruz as on 02.09.2015

*  if sy-uname = 'DWLDEV'.

*************************************************************************************

*****This part of enhancement will run only with BDc program ZPS_CJIC_SETTLEMENT_RULE.

*************************************************************************************

DATA: IT_GT_COVP_EXT  TYPE KAEP_T_COVP_EXT,

         ITT_GT_COVP_EXT TYPE KAEP_T_COVP_EXT,

         WA_LS_COVP_EXT  TYPE KAEP_COVP_EXT,

         WS_COVP_EXT     TYPE KAEP_COVP_EXT,

         CONTROL         TYPE CHAR5..

   TYPES : BEGIN OF IT_CJIC ,

           PSPNR TYPE PRPS_R-POSID,    " WBS Number

           KONTY TYPE TBO01-OBART_LD"Account assignment category

           EMPGE TYPE DKOBR-EMPGE,     "Fixed Assets Number

**          BETRR TYPE CHAR40,          " Amount, COBRB-BETRR,

**          URZUO TYPE COBRB-URZUO,     "Source Assignment

           REFBN TYPE KAEP_COAC-REFBN, "Reference Document Number

           MATNR TYPE KAEP_COEP_X-MATNR" material No.

           REFBZ TYPE KAEP_COAC-REFBZ" Posting Row

**          PROZS TYPE COBRB-PROZS,      " Percent

         END OF IT_CJIC.

   DATA: EXPORT_FLD TYPE STANDARD TABLE OF IT_CJIC,

         TR_FIELD type STANDARD TABLE OF IT_CJIC,

         W_CJIC     TYPE IT_CJIC.

   DATA: W_FIELD    TYPE IT_CJIC.

   IMPORT EXPORT_FLD FROM MEMORY ID 'CJIC_FLD'.

   IMPORT CONTROL FROM MEMORY ID 'BDC_CJIC'.

   import TR_FIELD  from MEMORY Id 'CJIC_WA'.

   IF CONTROL = 'B_CJI'.

     IT_GT_COVP_EXT[] = GT_COVP_EXT[].

     LOOP AT IT_GT_COVP_EXT INTO WA_LS_COVP_EXT.

       READ TABLE TR_FIELD INTO W_CJIC WITH KEY REFBN = WA_LS_COVP_EXT-REFBN

                                                matnr = WA_LS_COVP_EXT-matnr

                                                REFBZ = WA_LS_COVP_EXT-REFBZ.

       IF SY-SUBRC = 0.

         WA_LS_COVP_EXT-SELKZ = 'X'.

       ENDIF.

       APPEND WA_LS_COVP_EXT TO ITT_GT_COVP_EXT .

     ENDLOOP.

     GT_COVP_EXT[] = ITT_GT_COVP_EXT[].

   ENDIF.

*ENDIF.

***************End of addition**********************************************************

ENDENHANCEMENT.

Information


Finally when we run this

and select Excel file.

content to be added in Excel file as below:

System will check ref. Document Number, Material and Posting Row (Posting row of reference document)

on basis of these combination system will create settlement rule for line item.

Execute and below is output:

NOTE: while executing this program sometime we get Memory_No_More_Paging Dump. to resolve this issue you have to set Parameter "rdisp/PG_MAXFS" with help of basis Consultant. also refer SAP NOTE- 0000133909.

please check below screen:

Execute-RZ11

click on Display:

Yellow highlighted value needs to change with help of Basis Consultant.


Thank you for reading and hope you liked it.

Thank you for your time and feedback!

Suggestions would be appreciated and always welcome to improve Quality of this document.

Warm Regards

Sunil Yadav

8 Comments