cancel
Showing results for 
Search instead for 
Did you mean: 

Substitution FI

david_mg
Explorer
0 Kudos

Hello,

We're implementing SAP ECC 6.0.

I need substitution de field BSEG-KOSTL in the transaction FB01.

I use the routine ZRGGBS000/point 3.

¿This is a modify field?

I modify other field correctly, but when i assign a value to cost center, the system show a short dump:

Anál.errores
    Short text of error message:
    Error GENERAL_ERROR MESSAGES_ACTIVE_REQUIRED

    Long text of error message:
     Diagnóstico
         Se produjo el siguiente error de programa o de tratamiento.
         Imformaciones de error:
         GENERAL_ERROR
         MESSAGES_ACTIVE_REQUIRED
     Actividades en el sistema
         No se puede proceder el programa.
     Procedimiento
         Si Ud. mismo no puede resolver el programa con ayuda de las
         informaciones de error, apúntelas igual que las entradas que han
         conducido a este error. Diríjase por favor a su administrador de
         SAP para tratar el problema.

    Technical information about the message:
    Message class....... "K5"
    Number.............. 011
    Variable 1.......... "GENERAL_ERROR"
    Variable 2.......... "MESSAGES_ACTIVE_REQUIRED"
    Variable 3.......... " "
    Variable 4.......... " "

Help me please.

Accepted Solutions (1)

Accepted Solutions (1)

former_member581986
Active Participant
0 Kudos

Hi David,

call-up point 3 is "Complete document". This requires some specific syntax to be followed when defining the form in the Z* form pool. First, the exit must have type "C_EXIT_PARAM_CLASS", second, the particular form Uxxx must be defined like this: "USING bool_data TYPE gb002_015".

Second, when defining the substitution step in OBBH, some fields should be available for substitution. Note that by default, none or only a very limited number of fields are available for substitution in call-up point 3. Pls. check this in your system as follows: go to OBBH, maintain the existing substitution (or create a new one) for call up point 3 and try to add a new step. Is the cost center field offered for substitution? If yes, leave OBBH without saving. If not, do the same, but then we have found the root cause.

If the Cost center field is available, and the complete environment (OBBH and Z* form pool) are set up correctly, then the issue might be that you substitute the Cost center field where you really should not. Is it a balance sheet account, for instance? I think your substituted cost center is leading to some inconsistency and that's why SAP is not recommending to substitute fields at this call-up point.

If you think that the setup is correct and still you get the error, you should provide some more information on the line item(s) you want to substitute your CC into. By the way, what is the prerequisite of the substitution step?

Hope that helps, points welcome

Csaba

david_mg
Explorer
0 Kudos

Hello Csaba,

In the transaction OBBH, in the tables BKPFy BSEG for the boolean class 15, the field exclude is empty.

The prerequisite is empty. I use a EXIT to verify the requirements, this is the code of the EXIT:


  exits-name  = 'U900'.
  exits-param = c_exit_param_class.
  exits-title = text-103.
  APPEND exits.
......
FORM u900 USING bool_data TYPE gb002_015.
  DATA: lc_gsber LIKE bseg-gsber.

  IF sy-tcode+0(1) = 'F' AND sy-tcode+2(2) = '01'.
    LOOP AT bool_data-bseg INTO bseg.
      IF bseg-buzei = '001'.
        MOVE bseg-gsber TO lc_gsber.
      ENDIF.
      IF bseg-kostl IS INITIAL.
        IF bseg-gsber IS INITIAL.
          bseg-kostl = lc_gsber.
          bseg-gsber = lc_gsber.
        ELSE.
          bseg-kostl = bseg-gsber.
        ENDIF.
        MODIFY bool_data-bseg FROM bseg.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                                                    "U900

The field BSEG-GSBER is updated correctly, but I update field BSEG-KOSTL shows a short dump.

Message was edited by:

David MG

former_member581986
Active Participant
0 Kudos

Hi,

you mean table GB01, field BEXCLUDE is empty?

Well, the form seems to be correct syntactically. Only very strange things is that, if the current line item does not contain any cost center, then you are moving the business area (gsber) from line item 1 into the cost center (kostl) field. Is this really what you want to do???

Some doubts against this:

1. Business area is 4 character, CC is 10 character. A MOVE is possible, but usually, you have only a few business areas while PLENTY of cost centers. So it is very likely that the value in BSEG-GSBER is not a valid cost center.

2. This substitution takes place for ALL items in any document posted with transaction Fx01. Well, what if this item is a vendor item? You cannot enter a cost center for a vendor line. Field status settings may prevent you from doing so, but also the business logic is weird, as the vendor line is a balance sheet account, but a cost center account assignment would implicate a P/L account. You really should substitute the cost center if you are sure that this is a P/L account. Having a look at this source code, this is not sure here at all. (You may have entered something for the prerequisite in OBBH, but I hardly believe you make the necessary restrictions).

Hope that helps, points welcome

Csaba

david_mg
Explorer
0 Kudos

Hi,

I change the code for not assigned the cost center to vendor line, because he was not correct.

In the boolean class 15 in table gb01, the field exclude is empty for the tables BKPF and BSEG, for substitution & for rules and conditions.

My code now is:


FORM u900 USING bool_data TYPE gb002_015.
  DATA: lc_gsber LIKE bseg-gsber.
  DATA: lc_kostl LIKE bseg-kostl.

  IF sy-tcode+0(1) = 'F' AND sy-tcode+2(2) = '01'.
    LOOP AT bool_data-bseg INTO bseg.
      IF bseg-buzei = '001'.
        MOVE bseg-gsber TO lc_gsber.
*        MOVE bseg-gsber TO lc_kostl.
        lc_kostl = '364'.
      ELSE.
        IF bseg-kostl IS INITIAL.
          IF bseg-gsber IS INITIAL.
            bseg-kostl = lc_kostl.
            bseg-gsber = lc_gsber.
          ELSE.
            bseg-kostl = lc_kostl.
          ENDIF.
          MODIFY bool_data-bseg FROM bseg.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                                                    "U900

The cost center "364" exists.

But the short dump it follows.

¿That I can do? Yes i comment the assign to field Kostl, the program modify the GSBER correctly.

Message was edited by:

David MG

Former Member
0 Kudos

Try padding the costcenter with leading zeros

lc_kostl = '0000000364'.

david_mg
Explorer
0 Kudos

The cost center exist with the code 364... but if i entry '0000000364' this result is the same.

I am implementing SAP ECC6 from zero, that parameter of the system can have to do with this DUMP that leaves.

Somebody gives some alternative me.

This is the short dump:


Err.tmpo.ejec.         MESSAGE_TYPE_X
Fecha y hora           18.09.2007 08:55:46



 Texto breve
     The current application triggered a termination with a short dump.



 ¿Qué ha sucedido?
     The current application program detected a situation which really
     should not occur. Therefore, a termination with a short dump was
     triggered on purpose by the key word MESSAGE (type X).



 Anál.errores
     Short text of error message:
     Error GENERAL_ERROR MESSAGES_ACTIVE_REQUIRED

     Long text of error message:
      Diagnóstico
          Se produjo el siguiente error de programa o de tratamiento.
          Imformaciones de error:
          GENERAL_ERROR
          MESSAGES_ACTIVE_REQUIRED
      Actividades en el sistema
          No se puede proceder el programa.
      Procedimiento
          Si Ud. mismo no puede resolver el programa con ayuda de las
          informaciones de error, apúntelas igual que las entradas que han
          conducido a este error. Diríjase por favor a su administrador de
          SAP para tratar el problema.

     Technical information about the message:
     Message class....... "K5"
     Number.............. 011
     Variable 1.......... "GENERAL_ERROR"
     Variable 2.......... "MESSAGES_ACTIVE_REQUIRED"
     Variable 3.......... " "
     Variable 4.......... " "
Posición desencadenante de error tiempo ejecución
    Programa                                SAPLKAID
    Include                                 LKAIDF0B
    Línea                                   28
    Tp.módulo                               (FORM)
    Nombre módulo                           MESSAGE_SEND



Detalle código fuente

Lín.  Txt.fte.

    1 *-------------------------------------------------------------------
    2 ***INCLUDE LKAIDF02 .
    3 *-------------------------------------------------------------------
    4 *&---------------------------------------------------------------------*
    5 *&      Form  MESSAGE_SEND
    6 *&---------------------------------------------------------------------*
    7 *       text                                                           *
    8 *----------------------------------------------------------------------*
    9 *  -->  p1        text
   10 *  <--  p2        text
   11 *----------------------------------------------------------------------*
   12 FORM MESSAGE_SEND
   13      USING MS_ARBGB LIKE SY-MSGID
   14            MS_MSGTY LIKE SY-MSGTY
   15            MS_TXTNR LIKE SY-MSGNO
   16            MS_MSGV1 TYPE ANY
   17            MS_MSGV2 TYPE ANY
   18            MS_MSGV3 TYPE ANY
   19            MS_MSGV4 TYPE ANY.
   20
   21   DATA: LD_TXTNR LIKE MESG-TXTNR.
   22
   23   PERFORM TRACE_MESSAGE_STORE(SAPLKAIPTRACE)
   24           USING  GD_SORT_MSG MS_ARBGB MS_MSGTY MS_TXTNR
   25                  MS_MSGV1 MS_MSGV2 MS_MSGV3 MS_MSGV4.
   26
   27   IF MS_MSGTY = 'X'.
>>>>>     MESSAGE ID MS_ARBGB TYPE MS_MSGTY NUMBER MS_TXTNR
   29             WITH MS_MSGV1 MS_MSGV2 MS_MSGV3 MS_MSGV4.
   30   ENDIF.
   31   LD_TXTNR = MS_TXTNR.
   32   CALL FUNCTION 'MESSAGE_STORE'
   33     EXPORTING
   34       MSGTY                   = MS_MSGTY
   35       MSGV1                   = MS_MSGV1
   36       MSGV2                   = MS_MSGV2
   37       MSGV3                   = MS_MSGV3
   38       MSGV4                   = MS_MSGV4
   39       ARBGB                   = MS_ARBGB
   40       TXTNR                   = LD_TXTNR
   41       ZEILE                   = GD_SORT_MSG
   42       EXCEPTION_IF_NOT_ACTIVE = SPACE.
   43
   44 ENDFORM.                    " MESSAGE_SEND

Help me.

former_member581986
Active Participant
0 Kudos

Also it is possible that, especially after an upgrade, you may have the proper GB01 entries and you may have the substitution set up in OBBH, but still the environment is faulty regarding the ability to substitute those fields. You can give it a try and run RGUGBR00 and see if the dump still about to come.

Hope that helps, points welcome

Csaba

david_mg
Explorer
0 Kudos

I used the program RGUGBR00 for validations. All the controls are correct and it does not leave any dump in this program

In the program RGUGBS00, single fault when I modify the cost center (BSEG-KOSTL) leaves the DUMP.

I used the cost center '1005' and '000000000000001005', but nothing.

I believe that the problem I can be in some customizing by which the field this blocking.

former_member581986
Active Participant
0 Kudos

Hi David,

no, RGUGBR00 is not used for validations. You may mix it with RGGBR000 (sample exit formpool for validations) and RGGBS000 (sample formpool for substitutions).

RGUGBR00 is something else, it is an executable program, while RGGBR000 and RGGBS000 are module pools and as such, they cannot be executed directly.

Hope that helps, points welcome

Csaba

david_mg
Explorer
0 Kudos

I feel it, I don't write fine, the name of program.

former_member581986
Active Participant
0 Kudos

Hm,

could you explain the business requirement behind this one.

The leading zeros may indeed be a problem, you have to make sure the field has the exact length of 10 digits. DO not include too many (or too few) zeros.

It would be also of advantage if you could set a break point on the statement where you populate the field. When stopped, then check the GL account in COBL-HKONT. Make sure it is valid a cost element (check in transaction KA03, beware the controlling area, the CE category should be 1), If it is not a cost element, then check out table T100C, whether the message KI 281 is switched off. (This message says that you should not enter any cost center when posting to a balance sheet account).

Hope that helps, points welcome

Csaba

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

The K5 message is a standard Controlling area, you have the values in your substitution but perhaps you have filled in a wrong field.

In the menu path you have the option Simulate and trace. You can please a break-point in your substutution and have a look to the incoming and out going data if a field value is wrong

Paul