Hi Gaurav,
I wrote code based on your scenario to get value for Yarn 'A'. Same way you can get value for 'B' & 'C'.
Check below code:
DATA: L_STRING TYPE STRING,
L_VALUE TYPE F,
L_RESULT TYPE LBKUM.
L_STRING = '{[1A,2B,2C]3,1B,4C}4,[1A,4B]4'.
REPLACE ALL OCCURRENCES OF ',' IN L_STRING WITH ' + % '.
REPLACE ALL OCCURRENCES OF '{' IN L_STRING WITH ' ( %'.
REPLACE ALL OCCURRENCES OF '[' IN L_STRING WITH ' ( %'.
REPLACE ALL OCCURRENCES OF '}' IN L_STRING WITH ' ) * % '.
REPLACE ALL OCCURRENCES OF ']' IN L_STRING WITH ' ) * %'.
*..Pass '1' for A and for rest characters '0'
REPLACE ALL OCCURRENCES OF 'A' IN L_STRING WITH ' * 1 %'.
REPLACE ALL OCCURRENCES OF 'B' IN L_STRING WITH ' * 0 %'.
REPLACE ALL OCCURRENCES OF 'C' IN L_STRING WITH ' * 0 %'.
REPLACE ALL OCCURRENCES OF '%' IN L_STRING WITH SPACE. "space after operators
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
FORMULA = L_STRING
PROGRAM = SY-REPID
ROUTINE = 'VAR_GET'
IMPORTING
VALUE = L_VALUE
EXCEPTIONS
DIVISION_BY_ZERO = 1
EXP_ERROR = 2
FORMULA_TABLE_NOT_VALID = 3
INVALID_EXPRESSION = 4
INVALID_VALUE = 5
LOG_ERROR = 6
PARAMETER_ERROR = 7
SQRT_ERROR = 8
UNITS_NOT_VALID = 9
MISSING_PARAMETER = 10
OTHERS = 11.
IF SY-SUBRC = 0.
MOVE L_VALUE TO L_RESULT.
WRITE:/ L_RESULT.
ENDIF.